Рендеринг частичного представления в коде MVC Razor

#asp.net-mvc-3 #views #partial

#asp.net-mvc-3 #число просмотров #частичный

Вопрос:

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

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

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

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

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

Ответ №1:

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

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

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

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

Обратите внимание, что второе из каждого окружено @{ } этим, потому что они не возвращают строку, а визуализируют непосредственно в поток.

Комментарии:

1. Спасибо, с Html.RenderPartial я не получаю перегрузки, поскольку метод ‘Write’ принимает 0 аргументов при его использовании с @ и {}

2. Похоже, что генерация кода не удалась или вызов недействителен. Не могли бы вы вставить свой вызов сюда?

Ответ №2:

Кроме того, рассмотрим @Html.Action() вместо частичного представления

Ответ №3:

 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)
            }
        });
    }
  

Ответ №4:

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

 @RenderPage("~/Views/Shared/LeftMenu.cshtml")