ActionLink无法访问根文件夹 - MVC 3

时间:2012-03-03 03:24:29

标签: asp.net-mvc-3 routes actionlink html.actionlink

我有一个具有以下结构的.Net MVC 3 Web应用程序

      • 帐户
        • LoginPage.aspx
    • 控制器
      • 的AccountController
        • 的Index.aspx

想象一下,我目前在“课程”区域的 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

我真的很感激如何为这个问题找到解决方案。

1 个答案:

答案 0 :(得分:2)

试试这个:

<%: Html.ActionLink("Log on", "Login",  "Account", new { area = "" } , new {  id = "logonLink", data_dialog_title = "Logon" })%>

密钥是area = ""位。对区域使用Url.ActionHtml.ActionLink时,如果未指定area路由值,则MVC将仅查找当前区域中的匹配项。

使用部分视图/模板时更为重要,因为它们可以在不同区域的视图中呈现。

因此,如果使用区域,请养成总是指定area路线值的习惯,除非使用Url.RouteUrlHtml.RouteLink