2012-03-03 47 views
0

我有一個具有以下結構ActionLink的無法訪問根文件夾 - MVC 3

    • 查看
      • 帳戶
        • LoginPage的淨MVC 3 Web應用程序。 aspx
    • 控制器
      • 的AccountController
    • 地區
        • 的Index.aspx

想象我目前在課程方面的的Index.aspx頁,我也有一個按鈕,就轉發我的LoginPage.aspx

在ASP.Net MVC我會打電話http://localhost/Account/Login,它會引導我到正確的頁面。如果我只是把它寫在瀏覽器上,它就可以工作!

但我想用的HTML輔助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

我真的很感激,如何找到這個問題的解決方案。

回答

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