0

我有一个具有以下结构的 .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

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

4

1 回答 1

2

试试这个:

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

关键是area = ""位。使用Url.ActionHtml.ActionLink与区域一起使用时,如果不指定area路由值,MVC 只会在当前区域中查找匹配项。

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

因此,如果使用区域,请养成始终指定area路线值的习惯,除非使用Url.RouteUrlor Html.RouteLink

于 2012-03-03T04:13:20.563 回答