Подтвердить что ты не робот

Создание контроллера для частичного просмотра в ASP.NET MVC

Как создать отдельный контроллер и модель для частичного просмотра? Я хочу, чтобы иметь возможность размещать это частичное представление в любом месте на сайте, чтобы он нуждался в его собственном контроллере. В настоящее время я делаю частичное как

@Html.Partial("_Testimonials")
4b9b3361

Ответ 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();
}