我想要自定义Html.DateTimePickerFor(a => a.Fields[0].Id, value)
所以结果应该是这样的:
<div name="Fields[0].Id"></div>
目前我使用Html.DatetimePicker("Fields[0].Id", value)
并且它完美无缺,但我想生成动态名称。
所以问题是如何设置正确的"name"
属性?
答案 0 :(得分: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。
答案 1 :(得分: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 );
}