ASP.NET MVC 4如何从视图传递模型到HTML助手函数

6

我希望将我的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


1
在调用 @Html.MyHelper(Model) 时,您是否检查过您的 Model 不为 null? - nemesv
它创建了视图模型,但是它没有值,我想访问模型属性名称和元数据。 - Irakli Lekishvili
我已经尝试了你的代码,如果模型已经初始化,它可以正常工作......所以我认为你应该检查一下@nemesv建议的内容。 - JTMon
2个回答

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()

2

我尝试了您的代码,只要模型已经被初始化,它就能正常工作......因此,我认为您应该检查@nemesv建议的内容,但我想澄清一下,在调用视图并将其传递给模型时应进行检查......在那里,您需要检查模型并确保它不是null


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接