2012-09-23 26 views
5

我想我的視圖模型(不IEnumerable的)傳遞給我的自定義HTML幫助ASP.NET MVC 4通模式從以HTML輔助

我是做對的IEnumerable這樣的:

助手:

public static IHtmlString GenerateTable<TModel, TValue>(this HtmlHelper<TModel> inHtml, IEnumerable<TValue> model) 

查看:

@Html.GenerateTable(Model) 

但如何我可以通過模型,它是不是要IEnumerable的幫手?

我嘗試這樣做:

public static MvcHtmlString MyHelper<TModel>(this HtmlHelper<TModel> html, object obj) 
     {} 

,但是當我這樣稱呼它

@Html.MyHelper(Model) 

obj是始終NULL

+1

你檢查你的'Model'調用'@ Html.MyHelper(Model)'時不爲null? – nemesv

+0

這是創建視圖模型它確實有價值,但我想訪問模型屬性名稱和元數據 –

+0

我試過你的代碼,它的工作原理很好,如果模型已經啓動......所以我認爲你應該檢查@nemesv建議 – JTMon

回答

10

嘗試這樣的:

public static MvcHtmlString MyHelper<TModel>(this HtmlHelper<TModel> htmlHelper) 
{ 
    TModel model = htmlHelper.ViewData.Model; 
    // TODO: do something with the model ... 
} 

和強類型視圖:

@model MyViewModel 
@Html.MyHelper() 
2

我曾嘗試你的代碼,它工作得很好,如果模型已經發起......所以我認爲你應該檢查@nemesv的建議,但我會澄清,當你調用視圖並將其傳遞給模型時,應該進行檢查......其他è您需要檢查模型,並確保它不爲空