将模型上其他属性的值传递给自定义htmlhelper

时间:2014-08-02 00:36:14

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

我正在尝试创建一个自定义的html帮助器,其中实际上有几个html元素,包括输入类型的文件和输入类型的按钮。

我的工作正常,但我还想包含一些隐藏的输入,并使用我模型的一些属性中的值填充值。是否可以在自定义@ Html.MyCustomHelperFor(m => m.somefield)中从我的模型中获取一些属性的值

我的方法签名如下所示:

public static MvcHtmlString MyCustomHelperFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)

另外,有点偏离主题,我会更适合在局部视图中写这个吗?

请告知。

1 个答案:

答案 0 :(得分:1)

您可以从ViewData

访问完整模型
MyCustomHelperFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
  MyModelClass model = htmlHelper.ViewData as MyModelClass;
  string otherProperty = model.OtherProperty;

然而,这不是很灵活,因为它只适用于一种模型类型(除非你进行条件检查(if (htmlHelper.ViewData is MyModelClass1) {..} else if (htmlHelper.ViewData is MyModelClass2) {..}等。

我建议您最好创建部分视图或自定义显示和编辑器模板。