当您使用Html.RenderPartial时,将使用您要渲染的 View 的名称,并在该位置渲染其内容。

我想实现类似的东西。我希望它使用您要呈现的 View 的名称以及其他一些变量,并在容器中呈现内容。

例如:

public static class WindowHelper
{
    public static string Window(this HtmlHelper helper, string name, string viewName)
    {
        var sb = new StringBuilder();

        sb.Append("<div id='" + name + "_Window' class='window'>");
        //Add the contents of the partial view to the string builder.
        sb.Append("</div>");

        return sb.ToString();
    }
}

有人知道怎么做吗?

最佳答案

RenderPartial扩展被编程为直接呈现到Response对象...您可以在源代码中看到它们:

....).Render(viewContext, this.ViewContext.HttpContext.Response.Output);

这意味着,如果您稍微改变方法,就可以完成所需的工作。除了将所有内容附加到StringBuilder之外,您可以执行以下操作:
using System.Web.Mvc.Html;

public static class WindowHelper
{
    public static void Window(this HtmlHelper helper, string name, string viewName)
    {
        var response = helper.ViewContext.HttpContext.Response;
        response.Write("<div id='" + name + "_Window' class='window'>");

        //Add the contents of the partial view to the string builder.
        helper.RenderPartial(viewName);

        response.Write("</div>");
    }
}

请注意,包括System.Web.Mvc.Html允许您访问RenderPartial()方法。

07-26 03:42