2016-01-21 72 views
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> 

我不知道该怎么在我的控制器做到达存储过程。该过程使用一个参数,即用户ID,并且所有需要访问的表都在我的EDMX中。这是我的控制器的样子。

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

我也有这个类,它看起来像一个数据库上下文类,但是当我创建的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中的网站中。