Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction

 2023-02-17    438  

问题描述

在ASP.NET MVC中,以下差异是什么:

  • Html.Partial和Html.RenderPartial
  • Html.Action和Html.RenderAction

推荐答案

Html.Partial返回一个字符串. Html.RenderPartial在内部调用Write并返回void.

Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction

基本用法是:

// 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代码.
将@ HTML.RENDERPARTIAL作为.ascx用户控件纳入父页面.一个.ascx用户控件的开销远远超过.

‘@ html.partial’返回一个html编码字符串,与父级内联构造.它访问了父级的模型.

‘@ html.renderpartial’返回等效的.ascx用户控件.它可以获得自己的页面的viewDataDicationary的副本,并对渲染术的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来带回不需要存储在变量中.

使用操作当您没有模型时要发送到视图并具有一点点文本以带回需要存储在变量中的内容.

使用 rayspartial 当您有一个模型发送到视图时,将有很多不需要存储在变量中的HTML.

使用 partial 当您有一个模型发送到视图时,需要存储在变量中的一点点文本.

逻辑和 rayspartial 更快.

以上所述是小编给大家介绍的Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34178.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。