我有一个具有以下结构的.Net MVC 3 Web应用程序
想象一下,我目前在“课程”区域的 Index.aspx 页面,我会有一个按钮,可以转发给 LoginPage.aspx
在ASP.Net MVC中,我会致电http://localhost/Account/Login,它会引导我进入正确的页面。如果我只是在浏览器上写下它就可以了!
但我想使用HTML Helper ActionLink ,所以我试过了:
<%: Html.ActionLink("Log on", "Login", "Account", routeValues: null, htmlAttributes: new { id = "logonLink", data_dialog_title = "Logon" })%>
获得相对路径:http://localhost/Course/Account/Login
我也试过了:
<%: Html.ActionLink("Log on", "Login", "../Account", routeValues: null, htmlAttributes: new { id = "loginLink", data_dialog_title = "Login" })%>
我收到错误消息:无法使用前导..退出顶级目录。
我也试过了相对路径:
<%: Html.ActionLink("Log on", "Login", "~/Account", routeValues: null, htmlAttributes: new { id = "loginLink", data_dialog_title = "Login" })%>
它引导我:
http://localhost/Course/~/Account/Login
我真的很感激如何为这个问题找到解决方案。
答案 0 :(得分:2)
试试这个:
<%: Html.ActionLink("Log on", "Login", "Account", new { area = "" } , new { id = "logonLink", data_dialog_title = "Logon" })%>
密钥是area = ""
位。对区域使用Url.Action
或Html.ActionLink
时,如果未指定area
路由值,则MVC将仅查找当前区域中的匹配项。
使用部分视图/模板时更为重要,因为它们可以在不同区域的视图中呈现。
因此,如果使用区域,请养成总是指定area
路线值的习惯,除非使用Url.RouteUrl
或Html.RouteLink
。