2012-03-03 7 views
0

У меня есть .Net MVC 3 веб-приложение, которое имеет следующую структуруActionLink не может получить доступ к корневой папке - MVC 3

  • корень
    • Просмотров
      • данные
        • 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

Я был бы очень признателен, как найти решение этой проблемы.

ответ

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.

Смежные вопросы