asp.net 5 MVC6 中标记助手和路由属性之间的奇怪行为
Strange behaviour between tag-helpers and Route attribute in asp.net 5 MVC6
当我在 <a>
标签中使用 asp-controller 和 asp-action 用于当前操作以外的另一个操作时,在控制器方法调用的视图中使用 [Route]
属性,生成的 link 有一个空的 href
属性。
在控制器中:
public class ForumController : Controller
{
[Route("[action]/{sectionId:int}")]
public async Task<IActionResult> ShowSection(int sectionId)
{
//some code
}
}
在视图中:
<a asp-controller="Forum" asp-action="Index">Index</a>
<a asp-controller="Forum" asp-action="ShowSection" asp-route-sectionId="@Model.ParentSection.Id">@Model.ParentSection.Name</a>
生成html:
<a href="">Index</a>
<a href="/ShowSection/1">Général</a>
如您所见,第一个 link 没有正确生成。所有针对当前操作以外的另一个操作的 link 都使用空 href
标记生成。
当我删除 ShowSection 操作的 [Route] 属性时:
<a href="/Forum">Index</a>
<a href="/Forum/ShowSection?sectionId=1">Général</a>
如您所见,link 已正确生成。
如何在保持我的 [Route]
属性(或使用替代属性)的同时解决此问题?
我终于找到了(@haim770 评论有帮助):
我为我的所有控制器和操作添加了 Route 属性,现在可以使用了。
当我在 <a>
标签中使用 asp-controller 和 asp-action 用于当前操作以外的另一个操作时,在控制器方法调用的视图中使用 [Route]
属性,生成的 link 有一个空的 href
属性。
在控制器中:
public class ForumController : Controller
{
[Route("[action]/{sectionId:int}")]
public async Task<IActionResult> ShowSection(int sectionId)
{
//some code
}
}
在视图中:
<a asp-controller="Forum" asp-action="Index">Index</a>
<a asp-controller="Forum" asp-action="ShowSection" asp-route-sectionId="@Model.ParentSection.Id">@Model.ParentSection.Name</a>
生成html:
<a href="">Index</a>
<a href="/ShowSection/1">Général</a>
如您所见,第一个 link 没有正确生成。所有针对当前操作以外的另一个操作的 link 都使用空 href
标记生成。
当我删除 ShowSection 操作的 [Route] 属性时:
<a href="/Forum">Index</a>
<a href="/Forum/ShowSection?sectionId=1">Général</a>
如您所见,link 已正确生成。
如何在保持我的 [Route]
属性(或使用替代属性)的同时解决此问题?
我终于找到了(@haim770 评论有帮助):
我为我的所有控制器和操作添加了 Route 属性,现在可以使用了。