수색…
소개
부분보기는 다른보기 내에서 렌더링되는보기입니다. 부분 뷰는 재사용 할 수 있으므로 코드 중복을 방지 할 수 있습니다. Html.Partial 또는 Html.RenderPartial에서 렌더링 할 수 있습니다.
통사론
@ Html.Partial ( "ViewName")
@ Html.Partial ( "ViewName", ViewModel)
@ {Html.RenderPartial ( "ViewName");}
부분보기가 공유 폴더가 아닌 다른 폴더에 있으면 다음과 같이보기의 전체 경로를 언급해야합니다.
-Html.RenderPartial ( "~ / Areas / Admin / Views / Shared / partial / _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 대 Html.RenderPartial
Html.Partial는 Html.RenderPartial 무효 반환하는 반면에, 문자열을 반환합니다.
Html.RenderPartial
이 메서드는 void를 반환하고 결과는 HTTP 응답 스트림에 직접 기록됩니다. 즉, 현재 웹 페이지 / 템플릿에 사용 된 것과 동일한 TextWriter 객체를 사용합니다. 이러한 이유로 partial 메서드보다 빠릅니다.이 메서드는 부분 뷰의 데이터를 표시하는 것이 해당 뷰 모델에 이미있는 경우에 유용합니다.
예 : 기사의 주석을 표시하는 블로그에서 주석이있는 기사 정보가 이미 뷰 모델에 채워 졌기 때문에 RenderPartial 메서드를 사용하고자합니다.
@{Html.RenderPartial("_Comments");}
Html.Partial
이 메서드는 HTML로 인코딩 된 문자열을 반환합니다. 이것은 변수에 저장 될 수 있습니다. Partial 메소드는 RenderPartial 메소드와 마찬가지로 부분 뷰의 데이터를 표시하는 것이 이미 해당 뷰 모델에있는 경우에도 유용합니다.
예제 : 기사의 주석을 표시하는 블로그에서 주석이있는 기사 정보가 이미 뷰 모델에 채워지기 때문에 부분 방법을 사용할 수 있습니다.
@Html.Partial("_Comments")