programing

Html.Partial vs Html.부분 & Html을 렌더링합니다.액션 대 HTML.렌더 작업

iphone6s 2023. 6. 1. 22:32
반응형

Html.Partial vs Html.부분 & Html을 렌더링합니다.액션 대 HTML.렌더 작업

ASP.NET MVC의 차이점은 무엇입니까?

  • Html.Partial그리고.Html.RenderPartial
  • Html.Action그리고.Html.RenderAction

Html.PartialString을 반환합니다. Html.RenderPartial 출들Write으로 를 반환합니다.void.

기본적인 용도는 다음과 같습니다.

// Razor syntax
@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName");  }

// WebView syntax
<%: Html.Partial("ViewName") %>
<% Html.RenderPartial("ViewName"); %>

위의 스니펫에서 두 호출 모두 동일한 결과를 얻을 수 있습니다.

의 할 수 ,Html.Partial변수에서 또는 메소드에서 반환하는 경우, 이 작업을 수행할 수 없습니다.Html.RenderPartial.

는 결는다기니다됩록에에 기록될 입니다.Response실행/평가 중 스트림.

은 이에도적다니됩용는다에도 됩니다.Html.Action그리고.Html.RenderAction.

@Html을 생각해 보세요.HTML 코드가 상위 페이지에 복사된 것처럼 부분적입니다.@Html을 생각해 보세요.부모 페이지에 통합된 .ascx 사용자 컨트롤로 Partial을 렌더링합니다..ascx 사용자 컨트롤의 오버헤드는 훨씬 많습니다.

'@Html.Partial'은 부모와 함께 인라인으로 생성되는 HTML 인코딩 문자열을 반환합니다.상위 모델에 액세스합니다.

'@Html.RenderPartial'은 .ascx 사용자 컨트롤에 해당하는 값을 반환합니다.페이지의 ViewDataDictionary 복사본을 가져오지만 RenderPartial의 ViewData를 변경해도 상위의 ViewData에는 영향을 주지 않습니다.

반사를 사용하여 다음을 확인할 수 있습니다.

public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model, ViewDataDictionary viewData)
{
    MvcHtmlString mvcHtmlString;
    using (StringWriter stringWriter = new StringWriter(CultureInfo.CurrentCulture))
    {
        htmlHelper.RenderPartialInternal(partialViewName, viewData, model, stringWriter, ViewEngines.Engines);
        mvcHtmlString = MvcHtmlString.Create(stringWriter.ToString());
    }
    return mvcHtmlString;
}

public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName)
{
    htmlHelper.RenderPartialInternal(partialViewName, htmlHelper.ViewData, null, htmlHelper.ViewContext.Writer, ViewEngines.Engines);
}

제가 찾은 것은 다음과 같습니다.

뷰로 보낼 모델이 없고 변수에 저장할 필요가 없는 html을 많이 가지고 있을 때 RenderAction을 사용합니다.

뷰로 보낼 모델이 없고 변수에 저장해야 하는 텍스트를 가져올 수 있는 약간의 텍스트가 있는 경우 작업을 사용합니다.

뷰로 보낼 모델이 있으면 변수에 저장할 필요가 없는 많은 html이 있을 때 RenderPartial을 사용합니다.

뷰로 보낼 모델이 있고 변수에 저장해야 하는 텍스트가 조금 있을 경우 부분을 사용합니다.

RenderActionRenderPartial이 더 빠릅니다.

차이점은 첫 번째는 하나가 반환한다는 것입니다.MvcHtmlString두 번째(Render..는 응답으로 직접 출력합니다.

@Html.Partial그리고.@Html.RenderPartial부분 뷰 모델이 상위 모델과 일치하는 경우 사용되며, 이를 호출하기 위한 작업 방법을 만들 필요가 없습니다.

@Html.Action그리고.@Html.RenderAction부분 뷰 모델이 상위 모델과 독립적인 경우에 사용되며, 기본적으로 페이지에 위젯 유형 콘텐츠를 표시할 때 사용됩니다.뷰에서 메서드를 호출하는 동안 부분 뷰 결과를 반환하는 작업 메서드를 만들어야 합니다.

내말에의면하▁according면.@Html.RenderPartial() 속도가 실행 보다 빠릅니다.@Html.Partial()Html 때문에.RenderPartial은 출력에 대한 빠른 응답을 제공합니다.

왜냐하면 제가 사용할 때@Html.Partial()하는 데 이 더 .@Html.RenderPartial()

질문에 대한 자세한 내용:

"Html일 때.RenderPartial()은 부분 뷰의 이름만 사용하여 호출되며 ASP.NET MVC는 호출 뷰 템플릿에서 사용하는 것과 동일한 Model 및 ViewData 사전 개체를 부분 뷰에 전달합니다."

프로페셔널 ASP.NET MVC 1.0의 "너드 디너"

부분 또는 렌더링 부분:수행 방법을 만들 필요가 없습니다.부분 뷰에 표시할 데이터가 현재 페이지의 모델에 이미 있는 경우에 사용합니다.

액션 또는 렌더 액션: 하위 액션 메서드가 필요합니다.뷰에 표시할 데이터에 독립적인 모형이 있는 경우 사용합니다.

차이점:

  1. .RenderPartial이라void서 , 면에반.Partial아온다를 합니다.MvcHtmlString

  2. 을 호출하기 위한 Partial()그리고.RenderPartial()레이저 보기의 방법

    @Html.Partial("PartialViewName")
    Html.}개 항목("부분이름"); }

  3. 을 호출하기 위한 Partial()그리고.RenderPartial() 양식 는 다음과 같습니다.

[%: Html.%] 부분("PartialViewName") %]
[% Html. %]부분적으로("PartialViewName"; %]

은 음은다관련두된가일인다질니문입터와 관련된 두 가지 입니다.Partial()그리고.RenderPartial()은 언제 사제용시습까니겠하언?를 사용합니까?Partial()1파운드가 RenderPartial()그 반대의 경우는?

가장 큰 차이점은RenderPartial()스트림에 void는 void를 반환합니다.Partial()는 메드반을 합니다.MvcHtmlString변수에 할당하고 필요한 경우 변수를 조작할 수 있습니다.따라서 출력을 조작하기 위해 변수에 할당해야 할 경우 Partial()을 사용하고, 그렇지 않은 경우 RenderPartial()을 사용하지 않으면 RenderPartial()을 사용합니다.

어떤 것이 성능에 더 좋습니까?

성능 측면에서 출력 스트림에 직접 렌더링하는 것이 더 좋습니다. RenderPartial()이 정확게동수성보우다니수보다 합니다.Partial().

.Html.RenderAction이라void즉, 반환 유형이 다음과 같은 보기에서 응답을 직접 렌더링합니다.Html.Action이라MvcHtmlString할 수 .

protected string RenderPartialViewToString(string viewName, object model)
    {
        if (string.IsNullOrEmpty(viewName))
            viewName = ControllerContext.RouteData.GetRequiredString("action");

        ViewData.Model = model;

        using (StringWriter sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
            viewResult.View.Render(viewContext, sw);
            return sw.GetStringBuilder().ToString();
        }
    }

그러면 보기의 HTML 문자열이 반환됩니다.

은 이다음적다니용됩도에는▁applic에도 됩니다.Html.Partial그리고.Html.RenderPartial

Html.Partial 익률MvcHtmlString 느림보

Html.RenderPartial하고 " " " " 를 반환합니다." 를 반환합니다.void그리고 그것은 에 비해 매우 빠릅니다.Html.Partial

@Html.Partial한 보기 HTML을 합니다.TextWriter물건. @Html.RenderPartial는 이메드반환니다됩는서를 반환합니다.void.@Html.RenderPartial보다 .@Html.Partial

문구의 .PartialView:

 [HttpGet] 
 public ActionResult AnyActionMethod
 {
     return PartialView();
 }

"부분"의 경우 항상 다음과 같이 사용합니다.

Ajax 호출과 같이 컨트롤러를 통해 이동해야 하는 페이지에 포함해야 하는 내용이 있으면 "Html"을 사용합니다.부분 렌더링".

예를 들어 '공유' 폴더에 컨트롤러별로 연결되지 않은 'static' 포함 항목이 있는 경우 "HTML.partial"을 사용합니다.

언급URL : https://stackoverflow.com/questions/5248183/html-partial-vs-html-renderpartial-html-action-vs-html-renderaction

반응형