Выполнить несколько возвращать один ActionResult - PullRequest
2 голосов
/ 08 сентября 2011

Сценарий: Мое приложение должно сделать запрос (AJAX) и на основе запроса несколько Div (эти DivS PartialViews) должны быть обновлены на клиенте. Div или частичные просмотры могут быть дорогостоящим вызовом, если они сделаны индивидуально.

Идея: Когда запрос будет выполнен, JS соберет список частичных представлений для обновления с любыми параметрами и отправит AJAX-запрос. Контроллер получает запрос и выполняет все частичные представления параллельно с использованием библиотеки TP, собирает визуализированную разметку и отправляет ответ клиенту, где клиент выводит частичные представления / div на странице.

Проблема: На сервере после получения списка частичных просмотров с параметрами. Как я могу выполнить частичные представления (имена, переданные от клиента) в методе действия и получить их ответ разметки / json?

Заранее спасибо.

1 Ответ

3 голосов
/ 08 сентября 2011

Используя код из этого вопроса, чтобы получить HtmlHelper:
Использование HtmlHelper в контроллере

public static HtmlHelper GetHtmlHelper(this Controller controller)
{
    var viewContext = new ViewContext(controller.ControllerContext, new FakeView(), controller.ViewData, controller.TempData, TextWriter.Null);
    return new HtmlHelper(viewContext, new ViewPage());
}

public class FakeView : IView
{
    public void Render(ViewContext viewContext, TextWriter writer)
    {
        throw new InvalidOperationException();
    }
}

Тогда в вашем методе действия контроллера:

var helper = GetHtmlHelper(this);
var html1 = helper.Partial("PartialView1");
var html2 = helper.Partial("PartialView2");

Затем верните фрагменты HTML в любом удобном для вас формате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...