カスタムしたいHtml.DateTimePickerFor(a => a.Fields[0].Id, value)
結果は次のようになります。
<div name="Fields[0].Id"></div>
現在私は使用Html.DatetimePicker("Fields[0].Id", value)
しており、完全に機能しますが、動的な名前を生成したいです。
問題は、正しい"name"
属性を設定する方法です。
カスタムしたいHtml.DateTimePickerFor(a => a.Fields[0].Id, value)
結果は次のようになります。
<div name="Fields[0].Id"></div>
現在私は使用Html.DatetimePicker("Fields[0].Id", value)
しており、完全に機能しますが、動的な名前を生成したいです。
問題は、正しい"name"
属性を設定する方法です。
これを試して。わたしにはできる。
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 に適用できます。
次のようなものを試してください(作業コードから適応):
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 );
}