我想在MVC3中编译自己的控件集。因此,我不想为所有这些扩展创建HTML Helper扩展,我想我会模仿其他框架(Telerik,DevExpress)的行为。所以我创建了一个新的助手扩展来提供我的Item类;如何渲染()而不是ToString()
public static IFriendlyComponentFactory Factory(this HtmlHelper helper)
{
return new FriendlyComponentFactory(helper.ViewContext);
}
,然后从内这里我提供了我的目标,所以我可以设置属性等
如果我把@ Html.Factory()。网格(),请将.Name( “测试”)
然后我得到;
MyTest.Extensions.Grid
我明白的是ToString()行为。所以,我将ToString更改为输出;
new MvcHtmlString("<h3>Test</h3>").ToString()
好吧,我得到了HTML完全编码,所以我看到我的标签和所有的页面。嗯。
我可以在Telerik的源代码中看到(我试图弄清楚自己)他们正在处理ToString()并且似乎在输出HTML,但是我可以看到工作在渲染中完成以输出到ViewContext编写器,而不是ToString()的输出。
最后,我试了一下;
@{ Html.Factory().Grid().Render(); }
而且我直接写了ViewContext.Writer。多田,我得到了HTML输出。
但是,我不想将代码括起来,我想了解如何提供更干净的界面。
任何想法,我可以提供这个?
我在想,写输出是我想要走的路,但我不太明白我是如何实现这一目标的。我如何获得写入输出的能力,但是放入; @ Html.Factory()。Grid()在我看来? – Hammerstein 2011-02-08 15:58:31