ASP.NET MVC 4将模型从视图传递给html帮助器

时间:2012-09-23 09:52:00

标签: asp.net asp.net-mvc razor html-helper

我想将我的ViewModel(不是IEnumerable)传递给我的自定义html帮助器

我在IEnumerable上这样做:

助手:

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

查看:

@Html.GenerateTable(Model)

但是我怎么能把IEnumerable的模型传递给helper?

我试过这个:

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

但是我称之为

@Html.MyHelper(Model)

obj总是NULL

2 个答案:

答案 0 :(得分:11)

试试这样:

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

并在您的强类型视图中:

@model MyViewModel
@Html.MyHelper()

答案 1 :(得分:2)

我已经尝试过你的代码并且它工作得很好,如果模型已经初始化......所以我认为你应该检查@nemesv的建议但是我会澄清你应该在你打电话时进行检查视图并将模型传递给它......你需要检查模型并确保它不是空的