我现在有一个导航栏,它是从MS数据库动态创建的,但是我想添加第二个子层。下面是我到目前为止工作的单级导航栏。
导航
public partial class Navigation
{
public int Id { get; set; }
public string Title { get; set; }
public Nullable<int> Position { get; set; }
public bool Main { get; set; }
public string Action { get; set; }
public string Controller { get; set; }
}HomeController
[ChildActionOnly]
public ActionResult Navigation()
{
var navigationModel = (from m in db.Navigations where (m.Main == true) orderby m.Position select m);
return View(navigationModel);
}导航
@{ Layout = null; }
@model IEnumerable<WebApplication1.Models.Navigation>
<ul class="nav sf-menu clearfix">
@foreach (var item in Model)
{
@Html.MenuLink(item.Title, item.Action, item.Controller)
}
</ul>第二层需要链接到Content表,关系是db.Navigations.Id = db.Contents.NavigationId。
含量
public partial class Content
{
public int Id { get; set; }
public Nullable<int> NavigationId { get; set; }
public string Title { get; set; }
public string Content1 { get; set; }
public Nullable<int> Position { get; set; }
public string Image { get; set; }
public string Sub { get; set; }
public Nullable<bool> Active { get; set; }
public string Url { get; set; }
public string Summary { get; set; }
}请有人提供教程或示例代码,说明我如何将子数据绑定到父数据集,然后在“视图”中,如何检查父记录是否包含子记录,如果有,则循环遍历它们。
如能提供任何帮助,将不胜感激:)
发布于 2014-05-29 08:35:31
我添加了一个名为NavigationViewModel的新类来声明我希望使用的表,并修改了HomeController以使用NavigationViewModel来查询各个表。
NavigationViewModel
namespace WebApplication1.Models
{
public class NavigationViewModel
{
public List<Navigation> Navigation { get; set; }
public List<Content> Content { get; set; }
}
}HomeController
[ChildActionOnly]
public ActionResult Navigation()
{
var navigationModel = new NavigationViewModel();
navigationModel.Navigation = (from m in db.Navigations where (m.Main == true) orderby m.Position select m).ToList();
navigationModel.Content = (from n in db.Contents where (n.Active == true) orderby n.Position select n).ToList();
return View(navigationModel);
}导航
@model WebApplication1.Models.NavigationViewModel
<ul class="nav sf-menu clearfix">
@foreach (var navigation in Model.Navigation)
{
int records = Model.Content.Count(c => c.NavigationId == navigation.Id);
if (records > 0)
{
@Html.SubMenuLink(navigation.Title, navigation.Action, navigation.Controller)
@Html.Raw("<ul>")
foreach (var content in Model.Content.Where(c => c.NavigationId == navigation.Id))
{
if (string.IsNullOrEmpty(content.Url))
{
if (string.IsNullOrEmpty(content.Content1))
{
}
else
{
@Html.MenuLink(content.Title, "Home/Article/" + content.Id + "/" + ToFriendlyUrl(content.Title), "Home");
}
}
else
{
@Html.MenuLink(content.Title, content.Url, "Home");
}
}
@Html.Raw("</ul>")
@Html.Raw("</li>")
}
else
{
@Html.MenuLink(navigation.Title, navigation.Action, navigation.Controller)
}
}
</ul>我不确定这是实现最终目标的最优雅或最有效的方法,任何让代码更高效的建议,我都很乐意听。
https://stackoverflow.com/questions/23823735
复制相似问题