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”])%> 但这不起作用
答案 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类上的静态工厂方法。所有这一切都令人尴尬但我们在这里。