asp.net-mvc
Częściowe widoki
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")