Szukaj…


Wprowadzenie

Widok częściowy to widok renderowany w innym widoku. Widoki częściowe mogą być ponownie wykorzystane, co zapobiega duplikowaniu kodu. Mogą być renderowane przez Html.Partial lub Html.RenderPartial

Składnia

  • @ Html.Partial („ViewName”)

    @ Html.Partial („ViewName”, ViewModel)

    @ {Html.RenderPartial („ViewName”);}

    Jeśli widok częściowy znajduje się w innym folderze niż folder współdzielony, musisz podać pełną ścieżkę widoku, jak poniżej:

    [email protected] („~ / Obszary / Administrator / Widoki / Udostępniony / częściowy / _subcat.cshtml”)

Widok częściowy z modelem

Model można również dodać do widoku częściowego:

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

W widoku możesz teraz po prostu użyć:

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

Widok częściowy na ciąg znaków - w przypadku treści wiadomości e-mail itp

Wywołanie funkcji

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

Funkcja do generowania 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();
    }
}

Widok częściowy - PartialInvoiceCustomer

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

Html.Partial Vs Html.RenderPartial

Z drugiej strony Html.Partial zwraca ciąg znaków Html.RenderPartial zwraca void.

Html.RenderPartial

Ta metoda zwraca wartość void, a wynik jest zapisywany bezpośrednio w strumieniu odpowiedzi HTTP. Oznacza to, że używa tego samego obiektu TextWriter, który jest używany na bieżącej stronie / szablonie. Z tego powodu ta metoda jest szybsza niż metoda Częściowa. Ta metoda jest przydatna, gdy wyświetlanie danych w widoku częściowym jest już w odpowiednim modelu widoku.

Przykład: W blogu, aby wyświetlić komentarze do artykułu, chcielibyśmy użyć metody RenderPartial, ponieważ informacje o artykule z komentarzami są już wypełnione w modelu widoku.

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

Html.Partial

Ta metoda zwraca ciąg zakodowany w formacie HTML. Można to zapisać w zmiennej. Podobnie jak metoda RenderPartial, metoda Częściowa jest również przydatna, gdy wyświetlanie danych w widoku częściowym jest już w odpowiednim modelu widoku.

Przykład: w blogu, aby wyświetlić komentarze do artykułu, możesz użyć metody Częściowa, ponieważ informacje o artykule z komentarzami są już wypełnione w modelu widoku.

@Html.Partial("_Comments")


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow