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

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


当前回答

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

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

其他回答

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

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

超文本标记语言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。

Partial或RenderPartial:不需要创建动作方法。当要在局部视图上显示的数据已经存在于当前页面的模型中时使用。

Action或RenderAction:需要子动作方法。当数据显示在视图上具有独立模型时使用。

Html的返回类型。RenderAction是空的,这意味着它直接在视图中渲染返回类型为Html的响应。你可以在控制器中捕获它的渲染视图,并使用以下方法修改它

protected string RenderPartialViewToString(string viewName, object model)
    {
        if (string.IsNullOrEmpty(viewName))
            viewName = ControllerContext.RouteData.GetRequiredString("action");

        ViewData.Model = model;

        using (StringWriter sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
            ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
            viewResult.View.Render(viewContext, sw);
            return sw.GetStringBuilder().ToString();
        }
    }

这将返回视图的Html字符串。

这也适用于Html。Partial和Html。RenderPartial方法

区别是第一个返回MvcHtmlString,但第二个(Render..)直接输出到响应。