如何在ASP.NET MVC的母版页中使用模型?

时间:2009-11-20 20:31:51

标签: asp.net-mvc linq master-pages

public ActionResult Index(){

         var dataContext = new DataEvidencijaDataContext();



         MembershipUser myObject = Membership.GetUser();   
         string KorisnickoIme = myObject.UserName.ToString();     

        var user = from i in dataContext.korisniks
                   where i.korisnik1 == KorisnickoIme
                   select i;
        ViewData.Add("user", user);
        return View(user);
    }

在母版页中,我把它放了 <%= Html.RenderPartial(“profPredmeti”,ViewData [“user”])%> 但这不起作用

4 个答案:

答案 0 :(得分:1)

您可以使用RenderAction将菜单呈现委派给某个控制器。另一个选择是让您的控制器(或基本控制器类或动作过滤器)将菜单对象放入ViewData,然后您的母版页将执行

<% Html.RenderPartial("MenuRenderView", ViewData["menu"]) %>

其中MenuRenderView.aspx局部视图使用ViewData [“menu”]中的菜单对象。该对象包含的内容取决于您的数据库/代码。

答案 1 :(得分:0)

我过去采用的方法是拥有一个基本控制器类,所有其他控制器都从该类继承。在该基本控制器类中,您可以在初始化控制器后将项添加到ViewData中:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    base.Initialize(requestContext);

    ViewData.Add("CommonPageData", CommonPageData);
}

在这种情况下,“CommonPageData”是属性或类型 CommonPageData (自定义类),其属性是延迟加载的。其中一个属性是在母版页上使用的导航项集合。

答案 2 :(得分:0)

用于菜单的

用户 RenderPartial ,但是您需要一直传递ViewData数据源的菜单,解决方法是使成为一个抽象的BaseController 并将数据源放在ViewData中该基本控制器的构造函数中 所有控制器都将从基本控制器继承

答案 3 :(得分:0)

我将此块放在我的Site.Master页面中:

<script runat="server" type="text/C#">
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        MasterModel = SiteMasterViewData.Get();
    }

    protected SiteMasterViewData MasterModel;
</script>

Get()方法是一种固定在View Data类上的静态工厂方法。所有这一切都令人尴尬但我们在这里。