2010-07-28 73 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)); 

你很好走!对我很好。不知道为什么他们甚至不屑于制定一个单独的内部方法。

相关问题