Создание контроллера для частичного просмотра в ASP.NET MVC
Как создать отдельный контроллер и модель для частичного просмотра? Я хочу, чтобы иметь возможность размещать это частичное представление в любом месте на сайте, чтобы он нуждался в его собственном контроллере. В настоящее время я делаю частичное как
@Html.Partial("_Testimonials")
Ответы
Ответ 1
Почему бы не использовать Html.RenderAction()
?
Затем вы можете поместить следующее в любой контроллер (даже создав для него новый контроллер):
[ChildActionOnly]
public ActionResult MyActionThatGeneratesAPartial(string parameter1)
{
var model = repository.GetThingByParameter(parameter1);
var partialViewModel = new PartialViewModel(model);
return PartialView(partialViewModel);
}
Затем вы можете создать новое частичное представление и иметь PartialViewModel
то, на что он наследует.
Для Razor блок кода в представлении будет выглядеть так:
@{ Html.RenderAction("Index", "Home"); }
Для WebFormsViewEngine это будет выглядеть так:
<% Html.RenderAction("Index", "Home"); %>
Ответ 2
Ему не нужен собственный контроллер. Вы можете использовать
@Html.Partial("../ControllerName/_Testimonials.cshtml")
Это позволяет отображать частичную часть с любой страницы. Просто убедитесь, что относительный путь правильный.
Ответ 3
Если бы это был я, я бы просто создал новый контроллер с единственным действием, а затем использовал RenderAction вместо Partial:
// Assuming the controller is named NewController
@{Html.RenderAction("ActionName",
"New",
new { routeValueOne = "SomeValue" });
}
Ответ 4
Самое главное: созданное действие должно возвращать частичное представление, см. ниже.
public ActionResult _YourPartialViewSection()
{
return PartialView();
}