Рендеринг частичного просмотра в коде MVC Razor - PullRequest
19 голосов
/ 14 октября 2011

Я использую MVC 3 Razor для создания простой CMS для практических целей, и идея в том, что я создаю несколько частичных представлений.

Я хочу выполнить поиск в базе данных, и вижу, что 3 частичных представления требуют рендеринга на страницу.

Как бы я это сделал?В WebForms вы вызываете LoadControl (ControlURL), но я не вижу здесь эквивалента.

Будет ли это на стороне клиента?

Правка - я больше думал о том, чтобы взятьПросмотр имени из модели, а затем визуализация этого вида, а не знание имени вида заранее.Таким образом, страница может иметь представление с именем Foo или представление с именем Bar.Модель во время выполнения сообщит контроллеру, какое представление визуализировать.

Ответы [ 4 ]

50 голосов
/ 14 октября 2011

Есть два метода, которые вы можете использовать для визуализации элемента управления.

@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName"); }

Вы также можете выполнять другие действия.

@Html.Action("ActionName", "Controller", new { Values = "yourvalues" })
@{ Html.RenderAction("ActionName", "Controller", new { Values = "yourvalues" }); }

Заметьте, что второй из них окружен @{ } это потому, что они не возвращают строку, а визуализируют прямо в поток.

1 голос
/ 14 октября 2011

Также рассмотрим @Html.Action() вместо частичного просмотра

0 голосов
/ 06 сентября 2018

Другой способ

@RenderPage("~/Views/Shared/LeftMenu.cshtml")
0 голосов
/ 03 марта 2016
Html.RenderPartial("partialview name", Model.class, new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "classname" } });

This code can be used to render the partial view in apge.
HTMLfiledprefix is defined to keep the data available in the model

You can use tis code to load a partial view on a button event using ajax
 function partialview() {
        var url = '@Url.Action("action", "controller")';
        var data = $('#frm').serialize();
(to serialize the data in the model before posting to the action)
        var finaldata = data;
        $.ajax({
            type: "post",
            url: url,
            data: finaldata,
            async: false,
            contentType: "application/json; charset=utf-8",
            error: function (xhr) {
                errorRedirecttoErrorController(xhr.error);
            },
            success: function (data) {
                $("#DIVID").html(data);
(div to which the partial view to be loaded)
            }
        });
    }
...