MVC2中的Html.Partial(视图,模型)和Html.RenderPartial(视图,模型)之间有什么区别(如果有的话)?

时间:2010-04-28 13:28:44

标签: asp.net asp.net-mvc-2

除了它返回的类型以及你当然以不同方式调用它的事实

<% Html.RenderPartial(...); %>
<%= Html.Partial(...) %>  

如果它们不同,你为什么要打电话给另一个而不是另一个? 定义:

// Type: System.Web.Mvc.Html.RenderPartialExtensions
// Assembly: System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Assembly location: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll

using System.Web.Mvc;

namespace System.Web.Mvc.Html
{
    public static class RenderPartialExtensions
    {
        public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName);
        public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, ViewDataDictionary viewData);
        public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, object model);

        public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName, object model,
                                     ViewDataDictionary viewData);
    }
}

// Type: System.Web.Mvc.Html.PartialExtensions
// Assembly: System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Assembly location: C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 2\Assemblies\System.Web.Mvc.dll

using System.Web.Mvc;

namespace System.Web.Mvc.Html
{
    public static class PartialExtensions
    {
        public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName);

        public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName,
                                        ViewDataDictionary viewData);

        public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model);

        public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model,
                                        ViewDataDictionary viewData);
    }
}

3 个答案:

答案 0 :(得分:163)

唯一的区别是Partial返回MvcHtmlString,必须在<%= %>内调用,而RenderPartial返回void并直接呈现给视图

如果查看source code,您会看到它们都调用相同的内部方法,并传递StringWriter以进行渲染。

如果要查看,保存或操作生成的HTML而不是将其写入页面,则可以调用Partial

答案 1 :(得分:3)

HTML.RenderPartial不会像大多数其他帮助程序方法一样返回HTML标记。代替该方法,该方法直接将内容写入响应流,这就是开发人员必须使用分号将其称为整个C#行的原因。这比从局部视图缓冲渲染的HTML稍微有效,因为无论如何它都会被写入响应流。

答案 2 :(得分:0)

Html.PartialHtml.RenderPartial 是扩展方法,是网页的可重用部分。 RenderPartial 的返回类型为 void,而 Partial 返回 MvcHtmlStringHtml.RenderAction 将直接将结果呈现到响应流(更高效、更快速),而 Html.Action 返回一个带有结果的字符串(可以操作)。< /p>