2010-07-28 75 views

回答

8

我的猜測是鼓勵您使用System.Web.HtmlString來代替。但是,是的,我自己也想過這個,我在自己的幫手裏寫了一個重複的ToMvcHtmlString擴展。

MvcHtmlString是,IIRC,只是它們的兼容性修補程序,所以MVC 2可以在.NET 3.5和4上工作 - 但即使如此,在您自己的代碼中使用它也是有用的。

5

這是否解決您的問題?

public static MvcHtmlString SuperDenizControl(this HtmlHelper html) 
{ 
    var builder = new TagBuilder("select"); 
    //blah blah blah amazing control 
    var control = builder.ToString(); 
    return MvcHtmlString.Create(control); 
} 
+0

這不是問題,我只是想知道爲什麼。順便說一句,酷方法的名字! :) – 2010-07-28 13:14:30

23

我想我會發佈一個簡單的解決方法,爲那些可能正在尋找一個和偶然發現這個問題。

雖然ToMvcHtmlString是內在的,這是很容易繞過,因爲它使用的公共方法:

從MVC來源:

internal MvcHtmlString ToMvcHtmlString(TagRenderMode renderMode) { 
    return MvcHtmlString.Create(ToString(renderMode)); 
} 

兩個MvcHtmlString.Create和TagBuilder.ToString是公衆如此只需更換

return tagBuilder.ToMvcHtmlString(TagRenderMode.Normal); 

return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.Normal)); 

你很好走!對我很好。不知道爲什麼他們甚至不屑於制定一個單獨的內部方法。

相關問題