2010-01-18 164 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