使用Asp.net MVC传递模型来构建站点导航

本文关键字:模型 构建 站点导航 Asp net MVC 使用 | 更新日期: 2023-09-27 18:12:09

使用Asp.net MVC创建一个模型,该模型可以传递给控制器来构建站点导航。站点导航深度为4级,如下图所示。

Html:

<ul>
<li><a href="/nav-url">Nav1</a>
    <ul>
    <li><a href="/nav-url">Nav1.1</a></li>
    <li><a href="/nav-url">Nav1.2</a></li>
    <li><a href="/nav-url">Nav1.3</a>
        <ul>
            <li><a href="/nav-url">Nav1.3.1</a></li>
            <li><a href="/nav-url">Nav1.3.2</a></li>
            <li><a href="/nav-url">Nav1.3.3</a></li>
        </ul>
    </li>
    </ul>
</li>
<li><a href="/nav-url">Nav2</a>
    <ul>
        <li><a href="/nav-url">Nav2.1</a></li>
        <li><a href="/nav-url">Nav2.2</a></li>
        <li><a href="/nav-url">Nav2.3</a></li>
    </ul>
</li>
<li><a href="/nav-url">Nav3</a>
    <ul>
        <li><a href="/nav-url">Nav3.1</a></li>
        <li><a href="/nav-url">Nav3.2</a></li>
        <li><a href="/nav-url">Nav3.3</a></li>
    </ul>
</li>
</ul>
下面是我创建的模型:
Public class Nav
{
  Public string Title
  {get; set;}
  Public string URL
  {get; set;}
  Public string Target
  {get; set;}
}

现在,我如何在控制器中创建一个对象来完成视图中的绑定工作。应该是一个通用的列表或列表的列表有多个循环绑定值到HTML ?此外,上面显示的nav HTML是一个例子,第2级或第3级可以有项目,也可以没有。所以我的对象应该动态地处理它

 List<Nav> navItems = new List<Nav>();
 List<List<Nav>> navItems = new List<List<Nav>>();

使用Asp.net MVC传递模型来构建站点导航

我通过创建另一个模型来找到工作,这将是主要对象,我将所有数据填写为通用列表,然后将其传递给视图。

public class Nav 
{ 
  public SubNav SubNavItem { get; set; } 
  public List<Nav> SubNavItems { get; set; } 
} 
public class SubNav 
{ 
  public string Title { get; set; } 
  public string URL { get; set; } 
  public string Target { get; set; } 
}