猿问

Html.Partial对Html.RenderPartial&Html.Action对Html

Html.Partial对Html.RenderPartial&Html.Action对Html

在ASP.NETMVC中,在以下方面有什么区别:

  • Html.Partial

    Html.RenderPartial

  • Html.Action

    Html.RenderAction


慕田峪4524236
浏览 536回答 3
3回答

米琪卡哇伊

Html.Partial返回一个字符串。Html.RenderPartial打电话Write内部和返回void.基本用法是://&nbsp;Razor&nbsp;syntax@Html.Partial("ViewName")@{&nbsp;Html.RenderPartial("ViewName");&nbsp;&nbsp;} //&nbsp;WebView&nbsp;syntax<%:&nbsp;Html.Partial("ViewName")&nbsp;%><%&nbsp;Html.RenderPartial("ViewName");&nbsp;%>在上面的片段中,两个调用将产生相同的结果。的输出Html.Partial在变量中或从方法返回变量时,不可能做这件事Html.RenderPartial..结果将写入Response执行/评估期间的流。这也适用于Html.Action和Html.RenderAction.

慕田峪7331174

将@Html.Partial看作复制到父页面中的HTML代码。可以将@Html.RenderPartial看作是合并到父页面中的.ascx用户控件。.ascx用户控件的开销要大得多。@html.Partial‘返回与父字符串内联构造的html编码字符串。它访问父母的模型。@Html.RenderPartial‘返回等效的.ascx用户控件。它自己获取页面的ViewDataDictionary副本,而对RenderPartial视图数据所做的更改不会影响父视图数据。利用反射,我们发现:public&nbsp;static&nbsp;MvcHtmlString&nbsp;Partial(this&nbsp;HtmlHelper&nbsp;htmlHelper,&nbsp;string&nbsp;partialViewName,&nbsp;object&nbsp;model,&nbsp;ViewDataDictionary&nbsp;viewData){ &nbsp;&nbsp;&nbsp;&nbsp;MvcHtmlString&nbsp;mvcHtmlString; &nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;(StringWriter&nbsp;stringWriter&nbsp;=&nbsp;new&nbsp;StringWriter(CultureInfo.CurrentCulture)) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htmlHelper.RenderPartialInternal(partialViewName,&nbsp;viewData,&nbsp;model,&nbsp;stringWriter,&nbsp;ViewEngines.Engines); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mvcHtmlString&nbsp;=&nbsp;MvcHtmlString.Create(stringWriter.ToString()); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;mvcHtmlString;}public&nbsp;static&nbsp;void&nbsp;RenderPartial(this&nbsp;HtmlHelper&nbsp;htmlHelper,&nbsp;string&nbsp;partialViewName){ &nbsp;&nbsp;&nbsp;&nbsp;htmlHelper.RenderPartialInternal(partialViewName,&nbsp;htmlHelper.ViewData,&nbsp;null,&nbsp;htmlHelper.ViewContext.Writer,&nbsp;ViewEngines.Engines);}

慕无忌1623718

以下是我的发现:使用RenderAction如果您没有要发送到视图的模型,并且需要返回大量的html,则不需要将其存储在变量中。使用行动当您没有要发送到视图的模型,并且需要将需要存储在变量中的少量文本带回时。使用伦德帕蒂当您有一个模型要发送到视图时,将会有很多不需要存储在变量中的html。使用部分当您有一个模型要发送到视图时,需要将少量文本存储在变量中。RenderAction和伦德帕蒂更快。
随时随地看视频慕课网APP
我要回答