【问题标题】:Create dynamic links in the navigation panel在导航面板中创建动态链接
【发布时间】:2016-08-11 15:26:04
【问题描述】:

我正在尝试在 ASP.NET Core MVC 6 中动态创建我的顶部导航面板。

我知道这很简单,但我不知道如何让它发挥作用。这是我的工作(简化):

我的模特:

public class IP_Category
{
    public int id { get; set; }
    public string DisplayName { get; set; }
}

在我的控制器中:

    public IActionResult Index()
    {
        //This way I dynamically pass data to my View
        ViewBag.Categories = _repository.ReturnCategories();
        return View();
    }

在我的cshtml 页面中:

@{
    //this info is in the top of the page, here I retrieve data passed from
    //controller and save it as a local variable
    var categories = (List<IP_Category>)ViewBag.Categories;
}

然后在我负责导航的 _Layout 中:

<ul class="nav navbar-nav">
    <li><a asp-controller="Home" asp-action="Index">Home</a></li>
    <li><a asp-controller="Home" asp-action="About">About</a></li>
    <li><a asp-controller="Home" asp-action="Contact">Contact</a></li>

    @foreach (var category in categories)
    {
        <li><a asp-controller="Home" asp-action="@category.DisplayName">@category.DisplayName</a></li>
    }
</ul>

asp-action="@category.DisplayName" 出现问题,它不会在我的实际页面中生成适当的 href。

所以问题是我做错了什么?如何将category.DisplayName 传递给我的asp-action 标签,以便链接正常工作?

编辑 1 - 添加更多代码:

这是生成的(注意缺少的 href 标签)

<ul class="nav navbar-nav">
    <li><a href="/">Home</a></li>
    <li><a href="/Home/About">About</a></li>
    <li><a href="/Home/Contact">Contact</a></li>

    <li><a href="">Item1</a></li>
    <li><a href="">Item2</a></li>
</ul>

【问题讨论】:

  • 它实际产生了什么?
  • 我已经更新了我的帖子
  • 不,我的标签助手设置正确;如果它不起作用,那么我的默认元素也不会(前三个)

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc tag-helpers


【解决方案1】:

如果控制器和动作与现有控制器和动作不匹配,则不会呈现 href。我怀疑 @category.DisplayName 与您的家庭控制器上的任何实际操作名称都不匹配。似乎更有可能您有一个名为 Category 的操作,该操作需要一个与 @category.DisplayName 对应的参数,因此它应该作为路由参数而不是操作名称传递

@foreach (var category in categories)
{
    <li><a asp-controller="Home" 
               asp-action="Category" 
       asp-route-category="@category.DisplayName">@category.DisplayName</a></li>
}

【讨论】:

  • 你是对的!我不知道如果我的控制器下的实际IActionResult 存在,那么它不会创建适当的href。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-06-25
  • 2018-11-09
  • 1970-01-01
  • 2010-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多