我有以下帮助器,所以我可以有一个日期选择器字段:
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 :(得分:0)
您可能需要使用像this SO answer这样的表达式代码来将属性名称作为字符串。
这里是关键位,其中action是你的lambda model => model.EntryDate
:
var expression = (MemberExpression)action.Body;
string name = expression.Member.Name;