2016-11-14 5 views
2

Я пытаюсь отделить меню от _Layout.cshtml, но у меня возникают трудности.Загрузка меню с частичного просмотра в MVC

Мои файлы размещены, как показано ниже.

Views/Home/Index 
Views/Shared/_Layout 
Views/Shared/_Menu 

В _Layout.cshtml файле, у меня есть следующий код ...

@Html.Partial("_Menu") 

действие Меню находится в HomeController, и это выглядит, как показано ниже

public ActionResult Menu() 
{ 
    MenuModel menu = new MenuModel(); 
    return PartialView("_Menu", menu); 
} 

_menu имеет код ниже как первая линия

@model DomainModel.MenuModel 

Когда я запускаю проект на VS, все выглядит идеально, но я не вызываю действие Menu() в HomeController. Это как-то находит _Menu и отображает его отлично. Но я не понимаю, почему он не вызывает действие Menu()?

ответ

3

@Html.Partial("_Menu") будет просто отображать HTML-представление, ничего общего с контроллером. Если вы хотите позвонить контроллеру, используйте @{ Html.RenderAction("Menu", "Home"); }

+0

Привет, Это дает ошибку «Невозможно неявно преобразовать тип void в объект». –

+0

@ayilmaz просто формат использовать это @ {Html.RenderAction («Меню», «Главная»); } –

+0

хорошо, он дает эту ошибку «Общественный метод действий« _Menu »не найден на контроллере« HomeController » –

0

Действия предоставляются по запросу. Поэтому вам необходимо отправить запрос, например. через Ajax до YourController/YourAction или введите URL-адрес в браузере.

@Html.Partial() просто отображает представление с данными.

Чтобы сделать вид, вызвав действие, обратитесь к ответу Ahmends, https://stackoverflow.com/a/40589584/3936440.

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