在ASP。NET MVC,有什么区别:

超文本标记语言Partial和Html。RenderPartial方法 超文本标记语言动作和Html。RenderAction


当前回答

想想@Html。部分HTML代码复制到父页。 想想@Html。RenderPartial作为一个.ascx用户控件合并到父页面。.ascx用户控件的开销要大得多。

“@Html。Partial'返回一个html编码的字符串,该字符串与父对象内联构造。它访问父类的模型。

“@Html。RenderPartial'返回相当于一个.ascx用户控件。它获得自己的页面的viewdatdictionary副本,并且对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);
}

其他回答

超文本标记语言Partial:返回MvcHtmlString和slow

超文本标记语言RenderPartial:直接渲染/写入输出流,并返回void,与Html相比,它非常快。部分

根据我的说法,由于Html, @Html.RenderPartial()比@Html.Partial()执行得更快。RenderPartial给Output一个快速响应。

因为当我使用@Html.Partial()时,与@Html.RenderPartial()相比,我的网站需要更多的时间来加载

超文本标记语言Partial返回一个字符串。超文本标记语言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。Partial以html编码的字符串返回视图,并使用相同的视图TextWriter对象。 @Html。这个方法返回void。 @Html。RenderPartial比@Html快。部分

PartialView的语法:

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

差异:

RenderPartial的返回类型是void,而as Partial返回MvcHtmlString Razor视图中调用Partial()和RenderPartial()方法的语法 @Html.Partial(“PartialViewName”) @ {Html.RenderPartial(“PartialViewName”);} 在webform视图中调用Partial()和RenderPartial()方法的语法

[%: Html.Partial(“PartialViewName”) %] [% Html.RenderPartial(“PartialViewName”); %]

以下是与Partial()和RenderPartial()相关的2个常见面试问题 什么时候你会使用Partial()而不是RenderPartial(),反之亦然?

主要的区别是RenderPartial()返回void,输出将直接写入输出流,而Partial()方法返回MvcHtmlString,它可以被赋值给一个变量,并在需要时操作它。因此,当需要将输出分配给变量进行操作时,请使用Partial(),否则使用RenderPartial()。

哪一种性能更好?

从性能的角度来看,直接呈现到输出流更好。RenderPartial()做完全相同的事情,并且比Partial()的性能更好。