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 に適用できます。

GetExpressionText()

于 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 に答える