7

我想要定制Html.DateTimePickerFor(a => a.Fields[0].Id, value)

所以结果应该是这样的:

<div name="Fields[0].Id"></div>

目前我使用Html.DatetimePicker("Fields[0].Id", value)它并且它工作得很好,但我想生成动态名称。

所以问题是如何设置正确的"name"属性?

4

2 回答 2

4

试试这个。这个对我有用。

    public static MvcHtmlString DateTimePickerFor<TModel, TProp>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProp>> expression, object htmlAttributes)
    {
        string name   = ExpressionHelper.GetExpressionText(expression);
        ... rest of code here
    }

魔力来自System.Web.Mvc.ExpressionHelper.GetExpressionText()。从表达式中获得名称后,您可以将其应用于您的 div。

获取表达式文本()

于 2012-12-21T17:11:48.257 回答
2

尝试这样的事情(改编自工作代码):

public static IHtmlString DateTimePickerFor<TModel, TValue>(
    this HtmlHelper<TModel> helper,
    Expression<Func<TModel, TValue>> expression,

    // other input parameters as needed

) {
    // metadata gives you access to a variety of useful things, such as the
    // display name and required status
    var metadata = ModelMetadata.FromLambdaExpression( expression, helper.ViewData );
    string markup = ""; // markup for your input            

    var name = helper.NameFor( expression ); // getting the name

    return MvcHtmlString.Create( markup  );
}
于 2012-12-21T17:10:50.657 回答