我正在研究RAZOR。
_layout.cshtml包含以下内容作为侧边栏
<a class="sidebar-brand" href="../Purchase/Index">
它打开了https://localhost/Purchase/Index
它适用于任何CSHTML页面。然而,如果我点击编辑页面,我可以看到上面的URL
https://localhost/Purchase/Edit/46
从这个页面,如果我点击购买链接,它会尝试打开
https://localhost/Purchase/Purchase/Index
而不是
https://localhost/Purchase/Index
显然/在这种情况下,Procurment/Index将不起作用。
如何在href内部处理此问题?
在剃刀视图中使用@Url.Action("ActionName","ControllerName")
总是一种很好的做法。对于您的情况,应该是
@Url.Action("Index","Purchase")
使用href="/Purchase/Index"
或href="~/Purchase/Index
。顺便说一句,从MVC 4开始,Razor会自动检测以~/开头的属性,并自动插入的@Href
或@Url
调用你
有关其他信息,请参阅以下文章:通过在ASP中使用IIS URL重写,Tilde表示法映射到原始URL。NET网页Razor V3
还有一个额外的帖子:ASP。NET MVC,在相对路径的href属性中使用Tilde