[英]asp.net mvc 1.0 - how to render a partial view as a string
I need to render a partial view to a string within a controller action. 我需要在控制器动作中为字符串呈现局部视图。 I have the following sample code, but the ControllerContext. 我有以下示例代码,但有ControllerContext。 ParentActionViewContext does not seem to exist in mvc 1.0 在mvc 1.0中似乎不存在ParentActionViewContext
// Get the IView of the PartialView object.
var view = PartialView("MyPartialView").View;
// Initialize a StringWriter for rendering the output.
var writer = new StringWriter();
// Do the actual rendering.
view.Render(ControllerContext.ParentActionViewContext, writer);
Any tips greatly appreciated. 任何提示,不胜感激。
Here's one way to achieve this . 这是实现此目的的一种方法 。 There's also a BlockRenderer in MvcContrib . MvcContrib中还有一个BlockRenderer 。
try this MVC v1.0 (an extension method that i use) 试试这个MVC v1.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();
}
}
usage: 用法:
....
string htmlBlock = this.RenderPartialToString("YourPartialView", model);
return htmlBlock;
i use this in a ton of controllers with 100% success... 我在大量的控制器中以100%成功地使用它...
jim 吉姆
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.