У меня есть проверка, работающая с DataAnnotations на всех моих моделях, но я хотел бы отобразить индикатор для обязательных полей на загрузке страницы. Так как у меня есть вся своя централизованная проверка, я быть бы индикаторы твердого кода в Представлении. Вызов проверки на загрузке показал бы сводку проверки. Имеет любого, нашел хороший способ позволить модели определить то, что требуется, но проверка ее после рендеринга представления, подобного Html.ValidationMessageFor
?
Это не в моей голове, но это должно помочь вам начать:
public static MvcHtmlString IsRequiredTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
if (expression.IsRequired())
return MvcHtmlString.Create(string.Format("{0} [REQUIRED]", helper.TextBoxFor(expression)));
return helper.TextBoxFor(expression);
}
public static bool IsRequired<T, V>(this Expression<Func<T, V>> expression)
{
var memberExpression = expression.Body as MemberExpression;
if (memberExpression == null)
throw new InvalidOperationException("Expression must be a member expression");
return memberExpression.Member.GetAttribute<RequiredAttribute>() != null;
}
public static T GetAttribute<T>(this ICustomAttributeProvider provider) where T : Attribute
{
var attributes = provider.GetCustomAttributes(typeof(T), true);
return attributes.Length > 0 ? attributes[0] as T : null;
}
Вы можете добавить метод рендеринга, который использует отражение для проверки обязательного атрибута в поле.