我想在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