Asp.net mvc 共享视图中的ASP.NET MVC数据库驱动菜单
我需要一些关于在_layout.cshtml文件中插入菜单的指导。我遇到了两个问题: 1) 即使创建了一个包含两个数据模型的附加模型,也无法将这两个模型传递到布局文件 例如: 型号:Asp.net mvc 共享视图中的ASP.NET MVC数据库驱动菜单,asp.net-mvc,razor,asp.net-mvc-partialview,Asp.net Mvc,Razor,Asp.net Mvc Partialview,我需要一些关于在_layout.cshtml文件中插入菜单的指导。我遇到了两个问题: 1) 即使创建了一个包含两个数据模型的附加模型,也无法将这两个模型传递到布局文件 例如: 型号: public class IndexModel { public tblMenu tblMenu { get; set; } public tblSite tblSite { get; set; } } 我需要从同一页的菜单表和网站表的信息 2) 当我创建一个局部视图来传递菜单数据时,我不断收到异
public class IndexModel
{
public tblMenu tblMenu { get; set; }
public tblSite tblSite { get; set; }
}
我需要从同一页的菜单表和网站表的信息
2) 当我创建一个局部视图来传递菜单数据时,我不断收到异常,告诉我不能以这种方式使用模型
我的观点:
@model mvcSPS.Models.IndexModel
<li>@Model.tblMenu.MenuName</li>
My_layout.cshtml
<ul id="navigation">
@foreach (var item in Model)
{
@Html.Partial("_menu")
}
</ul>
@{Html.RenderAction("Menu", "Home");} //be sure to fully-qualify the controller since it's layout, otherwise it'll look to the current controller based on route values collection
@foreach(模型中的var项目)
{
@Html.Partial(“\u菜单”)
}
坦率地说,我已经用拖网捕鱼了。。我正在经历一个从ASP经典(是的,我知道)到ASP.net和MVC的艰难过渡
你的温和指导将不胜感激。
谢谢
Andrew在_layout.cshtml中更改@Html.Partial以调用控制器函数并呈现操作方法的结果
@foreach (var item in Model)
{
Html.RenderAction("_menu", "Home");
}
注意:不需要前缀“@”,因为它位于foreach循环的上下文中
编辑:根据我下面的评论建议
家庭控制器:
public ActionResult _menu()
{
return PartialView(db.IndexModels.ToList());
}
public ActionResult Menu() {
return PartialView("_menu", db.IndexModels.ToList());
}
_layout.cshtml
<ul id="navigation">
@foreach (var item in Model)
{
@Html.Partial("_menu")
}
</ul>
@{Html.RenderAction("Menu", "Home");} //be sure to fully-qualify the controller since it's layout, otherwise it'll look to the current controller based on route values collection
_menu.cstml
<nav>
<ul>
@foreach(var item in Model) {
Html.Partial("_menuItem", item)
}
</ul>
</nav>
@foreach(模型中的var项目){
Html.Partial(“\u menuItem”,项目)
}
_menuItem.cshtml
@foreach(var item in Model) {
<li>
<a href="http://url">text</a>
@if(item.Children.Any())
{
<ul>
Html.Partial("_menuItem", item.Children)
</ul>
}
</li>
}
@foreach(模型中的变量项){
@if(item.Children.Any())
{
Html.Partial(“\u menuItem”,item.Children)
}
}
不过,回顾您的问题,可能更适合使用从主局部视图调用的第二个局部视图来呈现嵌套项。我也做类似的事情。否则,您将有多个未经请求的呼叫返回到控制器