수색…


소개

부분보기는 다른보기 내에서 렌더링되는보기입니다. 부분 뷰는 재사용 할 수 있으므로 코드 중복을 방지 할 수 있습니다. 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")


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow