我有一个 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 as
http://ControllerOne/Create `。我有一种感觉,这只是因为空的 href 属性,但我想知道是什么导致 href 属性为空。