【发布时间】:2016-04-03 12:56:09
【问题描述】:
我有一个 MVC 6 项目,其路由设置为:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}/{closeOnSubmit?}");
});
我正在尝试使用标签助手构建超链接,例如:
<a asp-controller="MyController" asp-action="Create" asp-route-closeOnSubmit="true" class="fa fa-plus indent-15">+</a>
当页面被创建并且我将鼠标悬停在链接上时,它报告为http://localhost/MyController/Create 而没有closeOnSubmit 参数。当我在 Chrome 的开发者工具中检查 HTML 时,它看起来像:
<a href class="fa fa-plus indent-15">+</a>
我需要做什么才能将 closeOnSubmit 参数正确附加到路由中?
编辑:
我不完全了解 MVC 路由,所以很遗憾给出了一些错误的信息。当我第一次创建我的应用程序时,它的默认路由是:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
当试图让它工作时,我认为它可能没有正确路由,因为我没有将 closeOnSubmit 添加到路由中。在阅读了达林的回答后,我明白了,并且在将其添加到路线后肯定是错的。但是,对于这条特定的路线,我不需要传递 id。我尝试更改默认路由,使其使用 closeOnSubmit 而不是 id,但仍然没有解决未正确创建链接的问题。
在排查问题的时候,我也发现路线比我想象的还要错误。我正在处理的页面是通过转到http://localhost/ControllerOne/Create 生成的。超链接应该指向的页面是http://localhost/ControllerTwo/Create'. Even though my asp-controller tag is set to ControllerTwo, all of my hyperlinks are showing ashttp://ControllerOne/Create`。我有一种感觉,这只是因为空的 href 属性,但我想知道是什么导致 href 属性为空。
【问题讨论】: