2

Menulistfunctionimport У меня есть хранимая процедура, которую я пытаюсь вызвать, чтобы вернуть результат в мое представление. У меня есть класс в папке моих моделей, с которой я пытаюсь позвонить.Вызов хранимой процедуры в MVC

public class MasterMenu 
    { 

     public List<USP_MenuList_ForUser_G_Result> GetMenus(int userId) 
     { 


      List<USP_MenuList_ForUser_G_Result> GetMenuListForUser = null; 
      using (MenuEntities dataContext = new MenuEntities()) 
      { 
       GetMenuListForUser = dataContext.USP_MenuList_ForUser_G(56367).ToList(); 
       return GetMenuListForUser; 
      } 
     } 

Я пытался добраться до него, на мой взгляд, как так

<body> 

    <div id="header"> 
     <div id="logo"> 
     </div> 

    </div> 
    @if (Model.GetMenus(56367) != null && Model.GetMenus(56367).Count > 0) 
    { } 



    @RenderBody() 
</body> 

Я не был уверен, что делать в моем контроллере достичь хранимой процедуры. Процедура принимает один параметр, который является идентификатором пользователя, и все таблицы, которые ему нужны для доступа, находятся в моем EDMX. Вот как выглядит мой контроллер.

public class MasterMenuController : Controller 
    { 
     private MenuEntities menuEntities = new MenuEntities(); 
} 

У меня также есть этот класс, который выглядит как класс контекста db, но был автоматически сгенерирован, когда я создал EDMX.

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated from a template. 
// 
//  Manual changes to this file may cause unexpected behavior in your application. 
//  Manual changes to this file will be overwritten if the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

namespace Adds.Areas.Mvc.Menu.Models 
{ 
    using System; 
    using System.Data.Entity; 
    using System.Data.Entity.Infrastructure; 
    using System.Data.Entity.Core.Objects; 
    using System.Linq; 

    public partial class MenuEntities : DbContext 
    { 
     public MenuEntities() 
      : base("name=MenuEntities") 
     { 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      throw new UnintentionalCodeFirstException(); 
     } 

     public virtual DbSet<tblAgent> tblAgents { get; set; } 
     public virtual DbSet<tblMenu> tblMenus { get; set; } 
     public virtual DbSet<tblQualifier> tblQualifiers { get; set; } 
     public virtual DbSet<tblRoleMenuMapping> tblRoleMenuMappings { get; set; } 
     public virtual DbSet<tblRole> tblRoles { get; set; } 
     public virtual DbSet<tblUserRoleMapping> tblUserRoleMappings { get; set; } 
     public virtual DbSet<tblUsersLogin> tblUsersLogins { get; set; } 
     public virtual DbSet<tblUserMenuMapping> tblUserMenuMappings { get; set; } 

     public virtual ObjectResult<USP_MenuList_ForUser_G_Result> USP_MenuList_ForUser_G(Nullable<int> userID) 
     { 
      var userIDParameter = userID.HasValue ? 
       new ObjectParameter("UserID", userID) : 
       new ObjectParameter("UserID", typeof(int)); 

      return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<USP_MenuList_ForUser_G_Result>("USP_MenuList_ForUser_G", userIDParameter); 
     } 
    } 
} 

MenuModelExplorer

MenuEntities

+1

Кажется, что в соответствии с созданным контекстом он уже импортировал функцию. –

+0

Я добавил изображение, которое показывает это. Спасибо, что посмотрели –

ответ

2

Ваш контроллер должен сделать его доступным для зрения, такие как часть модели, перешедшей в сильно тип вида или в ViewBag. Поскольку, похоже, вы делаете это в глобальном макете или частичном представлении или что-то, потому что это всегда видимое меню, вы можете рассмотреть возможность добавления кода в приложение ViewBag в глобальный фильтр, который добавляется на сайт в вашем global.asax ,

Смежные вопросы