嘗試此MVC 1.0(,我使用的擴展方法)
public static class Extensionmethods
{
public static string RenderPartialToString(this Controller controller, string partialName)
{
return RenderPartialToString(controller, partialName, new object());
}
public static string RenderPartialToString(this Controller controller, string partialName, object model)
{
var vd = new ViewDataDictionary(controller.ViewData);
var vp = new ViewPage
{
ViewData = vd,
ViewContext = new ViewContext(),
Url = new UrlHelper(controller.ControllerContext.RequestContext)
};
ViewEngineResult result = ViewEngines
.Engines
.FindPartialView(controller.ControllerContext, partialName);
if (result.View == null)
{
throw new InvalidOperationException(
string.Format("The partial view '{0}' could not be found", partialName));
}
var partialPath = ((WebFormView)result.View).ViewPath;
vp.ViewData.Model = model;
Control control = vp.LoadControl(partialPath);
vp.Controls.Add(control);
var sb = new StringBuilder();
using (var sw = new StringWriter(sb))
{
using (var tw = new HtmlTextWriter(sw))
{
vp.RenderControl(tw);
}
}
return sb.ToString();
}
}
用法:
....
string htmlBlock = this.RenderPartialToString("YourPartialView", model);
return htmlBlock;
我使用此一噸100%的成功控制器...
jim
http://stackoverflow.com/questions/2537741/how-to-render-partial-view-into-a-string – Jarek 2010-04-11 11:20:11