Поиск…


Вступление

Частичный вид - это представление, которое отображается в другом представлении. Частичные представления могут быть повторно использованы и, таким образом, предотвратить дублирование кода. Они могут быть отображены с помощью Html.Partial или Html.RenderPartial

Синтаксис

  • @ Html.Partial ( "ViewName")

    @ Html.Partial ( "ViewName", ViewModel)

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

    Если частичное представление расположено в другой папке, отличной от общей папки, то вам нужно будет указать полный путь к представлению, как показано ниже:

    [email protected] ( "~ / Районы / Admin / Views / Shared / частичный / _subcat.cshtml")

Частичный вид с моделью

Модель также может быть добавлена ​​к частичному представлению:

@model Solution.Project.Namespace.MyModelClass
<p>@Model.Property</p>

В представлении теперь вы можете просто использовать:

<div>
    @Html.Partial("PartialViewExample", new MyModelClass(){Property="my property value"})  
</div>
<div>
    @{ Html.RenderPartial("PartialViewExample", new MyModelClass(){Property="my property value"}); }  
</div>

Частичный просмотр строки - для содержимого электронной почты и т. Д.

Вызов функции

string InvoiceHtml = myFunction.RenderPartialViewToString("PartialInvoiceCustomer", ToInvoice); // ToInvoice is a model, you can pass parameters if needed

Функция для генерации HTML

public static string RenderPartialViewToString(string viewName, object model)
{
    using (var sw = new StringWriter())
    {
        BuyOnlineController controller = new BuyOnlineController(); // instance of the required controller (you can pass this as a argument if needed)

        // Create an MVC Controller Context
        var wrapper = new HttpContextWrapper(System.Web.HttpContext.Current);

        RouteData routeData = new RouteData();

        routeData.Values.Add("controller", controller.GetType().Name.ToLower().Replace("controller", ""));

        controller.ControllerContext = new ControllerContext(wrapper, routeData, controller);

        controller.ViewData.Model = model;

        var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);

        var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
        viewResult.View.Render(viewContext, sw);

        return sw.ToString();
    }
}

Частичный вид - PartialInvoiceCustomer

@model eDurar.Models.BuyOnlineCartMaster
 <h2>hello customer - @Model.CartID </h2>

Html.Partial Vs Html.RenderPartial

Html.Partial возвращает строку, с другой стороны, Html.RenderPartial возвращает void.

Html.RenderPartial

Этот метод возвращает void, и результат напрямую записывается в поток ответов HTTP. Это означает, что он использует тот же объект TextWriter, который используется в текущей веб-странице / шаблоне. По этой причине этот метод выполняется быстрее, чем Partial method. Этот метод полезен, когда отображение данных в частичном представлении уже находится в соответствующей модели представления.

Пример. В блоге, чтобы показывать комментарии к статье, мы хотели бы использовать метод RenderPartial, поскольку информация о статье с комментариями уже заполнена в модели представления.

@{Html.RenderPartial("_Comments");}

Html.Partial

Этот метод возвращает строку, закодированную в HTML. Это можно сохранить в переменной. Подобно методу RenderPartial, частичный метод также полезен, когда отображение данных в частичном представлении уже находится в соответствующей модели представления.

Пример. В блоге, чтобы показывать комментарии к статье, вы можете использовать метод Partial, поскольку информация о статье с комментариями уже заполнена в модели представления.

@Html.Partial("_Comments")


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow