با سلام
چجوری میشه اطلاعات یک متادیتا ی کاستوم رو گرفت
مثلا placeholder رو که در مدل استفاده کردیم به عنوان متادیتا بهش اطلاعات دادیم میخوایم توی یک HtmlHelper که به صورت StronglyType هست استفاده کنیم
اما چطوری؟
با سلام
چجوری میشه اطلاعات یک متادیتا ی کاستوم رو گرفت
مثلا placeholder رو که در مدل استفاده کردیم به عنوان متادیتا بهش اطلاعات دادیم میخوایم توی یک HtmlHelper که به صورت StronglyType هست استفاده کنیم
اما چطوری؟
راهی سراغ دارین بشه DataAnnotation ها رو خوند؟
آخرین ویرایش به وسیله nunegandom : دوشنبه 12 تیر 1396 در 19:02 عصر
یه راه پیدا کردم که البته باید یک اتریبیوت بیشتر استفاده بشه برای data annotation ها
[AdditionalMetadata("maxLength",50)]
در نهایت برای دریافت این اتریبیوت ها داخل helper مون
این رو پاس میدیم:
Expression<Func<TModel, TProperty>> expression
و متادیتای مدل رو میگیرم:
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
و AdditionalMetadata هامون رو با این کد استخراج میکنیم:
var metadic = metadata.AdditionalValues;
در نهایت merg میکنیم توی تگمون
و بالاخره مشکلم کامل حل شد
public static MvcHtmlString TextBoxFor<TModel, TProperty> (this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string placeholder, string inputtype)
{
var name = ExpressionHelper.GetExpressionText(expression);
var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var validation = htmlHelper.GetUnobtrusiveValidationAttributes(name ,metadata);
return TextBox(htmlHelper, name, metadata.Model as string, placeholder, inputtype);
}