Расширения 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 ().
Мы исправляем это в MVC 2. Вы сможете вызвать Html.Partial () и получить фактическое содержимое представления в виде строки.
Почему бы не создать второе представление и частичное внутри него, передать Name как ViewData или в модели и т. д.
Что-то вроде:
<div id='<%= ViewData["Name"] + "_Window"%>' class='window'>
<% Html.RenderPartial(ViewData["Name"]); %>
</div>
Надеюсь, что это поможет, Дэн