ActionLink в Частичном, когда Частичное отображается в области
Я использую партиал для визуализации элемента управления выбора культуры. Элемент управления хранится в ~/Views/Shared/Control.cshtml. В элементе управления есть три actionlink для трех разных языков.
@Html.ActionLink("English", "ChangeCulture", "Home", new { lang = "en", returnUrl = this.Request.RawUrl }, null)
Я могу использовать этот элемент управления на странице по умолчанию, когда приложение запускается в браузере, но если я использую элемент управления из области, он обращается к неправильному контроллеру. Можно ли указать actionlink в элементе управления использовать HomeController по умолчанию?
Спасибо за вашу помощь заранее и позвольте мне сейчас, если потребуется более подробная информация.
С наилучшими пожеланиями, Фрэнк.
РЕДАКТИРОВАТЬ:
Это часть страницы макета, где отображается элемент управления выбором культуры:
<div id="login_details">
<div class="username">@ViewRes.SharedStrings.User: @User.Identity.Name</div>
@ViewRes.SharedStrings.ChangePassword
@*@Html.Partial("CultureChooserUserControl")*@
@Html.Partial("~/Views/Shared/CultureChooserUserControl.cshtml")
</div>
Я знаю, что третий параметр указывает на контроллер, проблема в том, что в этой области также есть HomeController. Могу ли я сообщить ActionLink, какой HomeController использовать?
2 ответа
Вам необходимо указать Район в параметрах маршрута?
@Html.ActionLink("English", "ChangeCulture", "Home",
new {Area = string.Empty, lang = "en", returnUrl = this.Request.RawUrl }, null)
У меня была похожая проблема, когда я пытался показать свое меню с контроллера в области.
Мое меню является частичным представлением из MenuController.
В моем _Layout.cshtml я теперь рендеринг меню, как это
@Html.Action("Index", "Menu",new{Area = string.Empty})
Мой MenuController делает это...
// GET: /Menu/
public ActionResult Index()
{
var vm = new MenuViewModel();
vm.IsLoggedIn = CurrentUser != null;
...
return PartialView(vm);
}