2013-06-20 29 views
0

,我有以下帮手我建的,所以我可以有一个日期选择器领域:在自定义帮手ID使用模型方法名

public static MvcHtmlString DatePickerFor<TModel>(this HtmlHelper<TModel> helper, Expression<Func<TModel, object>> property, string minDate = "2012-01-01", string maxDate = "2100-01-01") 
    { 
     TModel model = helper.ViewData.Model; 
     var builder = new TagBuilder("input"); 
     builder.Attributes.Add("id", "id"); 
     builder.Attributes.Add("type", "date"); 
     return MvcHtmlString.Create(builder.ToString()); 

    } 

我想要做的是生成ID和姓名我从我的视图传递给它的模型方法与您可以使用任何其他EditorFor或RadioButtonFor字段完全一样。

在我把它叫做这样的观点:

@Html.DatePickerFor(model => model.EntryDate) 

因此,在这种情况下,我想ID和名称为“EntryDate”。我试着在helper.ViewData和其他元数据中查找,但找不到任何可以使用的东西。术语“模型方法名称”可能是错误的,请随时纠正我。

+0

是否使用强类型的看法?如果你使用属性DataType = DataType.Date来标记你的Model属性,那么EditorFor生成的html将是一个输入类型= Date – Fals

+0

是的,但我还没有更多的解释为什么我要创建它一个自定义帮助器,而不是使用DataType的EditorFor。 – MrJinPengyou

回答

0

您可能需要使用使用表达式代码(如this SO answer)来获取属性名称作为字符串。

这里的键位,采取行动时,你的拉姆达model => model.EntryDate

var expression = (MemberExpression)action.Body; 
string name = expression.Member.Name;