PDA

View Full Version : سوال: دریافت اطلاعات مدل ازکاستوم متادیتا



nunegandom
شنبه 10 تیر 1396, 16:26 عصر
با سلام
چجوری میشه اطلاعات یک متادیتا ی کاستوم رو گرفت
مثلا placeholder رو که در مدل استفاده کردیم به عنوان متادیتا بهش اطلاعات دادیم میخوایم توی یک HtmlHelper که به صورت StronglyType هست استفاده کنیم
اما چطوری؟

nunegandom
دوشنبه 12 تیر 1396, 17:51 عصر
راهی سراغ دارین بشه DataAnnotation ها رو خوند؟

nunegandom
سه شنبه 13 تیر 1396, 15:51 عصر
یه راه پیدا کردم که البته باید یک اتریبیوت بیشتر استفاده بشه برای data annotation ها
[AdditionalMetadata("maxLength",50)]
در نهایت برای دریافت این اتریبیوت ها داخل helper مون
این رو پاس میدیم:
Expression<Func<TModel, TProperty>> expression
و متادیتای مدل رو میگیرم:
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
و AdditionalMetadata هامون رو با این کد استخراج میکنیم:
var metadic = metadata.AdditionalValues;
در نهایت merg میکنیم توی تگمون

nunegandom
یک شنبه 18 تیر 1396, 11:35 صبح
و بالاخره مشکلم کامل حل شد
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);
}