【问题标题】:ActionLink can't access root folder - MVC 3ActionLink 无法访问根文件夹 - MVC 3
【发布时间】:2012-03-03 03:24:28
【问题描述】:

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

    • 查看次数
      • 帐户
        • 登录页面.aspx
    • 控制器
      • 帐户控制器
    • 区域
      • 课程
        • 索引.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

我非常感谢如何找到解决此问题的方法。

【问题讨论】:

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


    【解决方案1】:

    试试这个:

    <%: 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

    【讨论】:

      猜你喜欢
      • 2018-12-04
      • 2011-01-30
      • 2016-10-14
      • 1970-01-01
      • 2018-08-02
      • 2013-10-07
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多