【发布时间】: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