2010-01-18 167 views
20

我有一个HtmlHelper扩展,当前使用字符串构建器和相当数量的复杂逻辑返回一个字符串。我现在想添加一些额外的东西它是取自渲染部分呼叫,像这样...ASP.NET MVC在Html Helper中使用渲染部分渲染

public static string MyHelper(this HtmlHelper helper) 
{ 
    StringBuilder builder = new StringBuilder(); 
    builder.Append("Hi There"); 
    builder.Append(RenderPartial("MyPartialView")); 
    builder.Append("Bye!"); 
    return builder.ToString(); 
} 

当然现在的RenderPartial直接呈现到响应所以这并未;吨的工作,我已经尝试了几种解决方案来渲染部分字符串,但似乎都在一个部分中使用HtmlHelper。

这可能吗?

回答

67

因为这个问题虽然陈旧而且有明显回答,但在谷歌中却出现了,我会给出一个不同的答案。

在asp.net mvc 2和3中,有一个像RenderPartial一样工作的Html.Partial(...)方法,但将部分视图作为字符串返回,而不是直接呈现它。因此

你举的例子就变成:

//using System.Web.Mvc.Html; 
public static string MyHelper(this HtmlHelper helper) 
{ 
    StringBuilder builder = new StringBuilder(); 
    builder.Append("Hi There"); 
    builder.Append(helper.Partial("MyPartialView")); 
    builder.Append("Bye!"); 
    return builder.ToString(); 
} 
+2

非常感谢。实际上,这应该被标记为正确的答案。 – Amrit 2012-07-03 13:07:13

+11

完美地工作,我想强调这一行:'使用System.Web.Mvc.Html'。 – 2012-12-12 10:01:03

+0

谢谢你,工作就像魅力:) – 2015-01-23 13:12:30

-2

你不应该从助手调用偏分量。帮手“帮助”你的观点,而不是其他的。从MVCContrib(如果您现在需要它)或MVC v2(如果您可以再等几个月)检查RenderAction方法。您可以将模型传递给标准控制器操作并获取部分结果。

+0

+1是的,我不希望渲染的部分从一个帮手。 – griegs 2010-01-18 22:45:58

+0

在某些情况下是的(可能包括这一个),但我尽量保持我的HTML像HTML文件一样可能,并使用Html助手来完成如何组合它们的逻辑。这样我仍然可以在我的html中获得很好的编辑器功能。但是,不使用渲染部分正是我在这种情况下所做的。 – 2010-01-19 08:14:33

+0

不知道是否回答了这个问题.... – nixon 2011-02-01 17:35:41