0

我有以下帮手,所以我可以有一个日期选择器字段:

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其他元数据,但找不到任何可以使用的东西。术语“模型方法名称”可能是错误的,所以请随时纠正我。

4

1 回答 1

0

您可能需要使用类似此 SO 答案的使用表达式代码来将属性名称作为字符串获取。

这是关键位,其中 action 是您的 lambda model => model.EntryDate

var expression = (MemberExpression)action.Body;
string name = expression.Member.Name;
于 2013-06-20T17:58:31.710 回答