您可以使用Html.Partial
返回該視圖的MvcHtmlString
。
您可以在System.Web.Mvc.Html.PartialExtensions
找到Partial
方法。
這裏有一個關於此方法的詳細信息:http://msdn.microsoft.com/en-us/library/ee402898.aspx
我個人使用這個我RenderPartials(複數)擴展方法:
public static void RenderPartials<T>(this HtmlHelper helper,
string partialViewName, IEnumerable<T> models, string htmlFormat)
{
if (models == null)
return;
foreach (var view in models.Select(model =>
helper.Partial(partialViewName,model, helper.ViewData)))
{
helper.ViewContext.HttpContext.Response
.Output.Write(htmlFormat, view);
}
}
更新
要渲染視圖到字符串在你的控制器中,你可以做這樣的事情(雖然它看起來有點破解):
var htmlHelper = new HtmlHelper(new ViewContext(), new ViewPage());
var viewString = htmlHelper.Partial("PartialViewName");
我之所以說這是一個黑客攻擊的原因是因爲HtmlHelper被設計用於你的視圖而不是你的控制器或模型。話雖如此,如果它有效,並且沒有替代方案來對分析視圖進行串聯處理,它可能對您有用。
鑑於修改你的問題,你會喜歡這個尋找的東西:
public string Index()
{
var htmlHelper = new HtmlHelper(new ViewContext(), new ViewPage());
return htmlHelper.Partial("PartialViewName");
}
如果上面的代碼不正確創建的HtmlHelper,你可以像這樣,而不是創建它:
TextWriter writer = new StringWriter();
var htmlHelper = new HtmlHelper(new ViewContext(ControllerContext,
new RazorView(ControllerContext, "","",true,null),
new ViewDataDictionary(),
new TempDataDictionary(), writer), new ViewPage());
你介意如何在控制器中使用它來簡單輸出視圖生成的html字符串(我修改了我的問題)。 – Judo 2012-04-12 10:42:59
請看我的更新@Judo – 2012-04-12 10:50:21