在ASP。NET MVC,有什么区别:
超文本标记语言Partial和Html。RenderPartial方法 超文本标记语言动作和Html。RenderAction
在ASP。NET MVC,有什么区别:
超文本标记语言Partial和Html。RenderPartial方法 超文本标记语言动作和Html。RenderAction
当前回答
超文本标记语言Partial:返回MvcHtmlString和slow
超文本标记语言RenderPartial:直接渲染/写入输出流,并返回void,与Html相比,它非常快。部分
其他回答
根据我的说法,由于Html, @Html.RenderPartial()比@Html.Partial()执行得更快。RenderPartial给Output一个快速响应。
因为当我使用@Html.Partial()时,与@Html.RenderPartial()相比,我的网站需要更多的时间来加载
区别是第一个返回MvcHtmlString,但第二个(Render..)直接输出到响应。
想想@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”,我总是这样使用:
如果有一些东西你需要包含在一个页面,你需要通过控制器(就像你会用Ajax调用),然后使用“Html.RenderPartial”。
如果你有一个“静态”包含,它本身没有链接到控制器,而只是在“共享”文件夹中,例如,使用“HTML.partial”
@Html。Partial以html编码的字符串返回视图,并使用相同的视图TextWriter对象。 @Html。这个方法返回void。 @Html。RenderPartial比@Html快。部分
PartialView的语法:
[HttpGet]
public ActionResult AnyActionMethod
{
return PartialView();
}