public override IEnumerable <ModelClientValidationRule> GetClientValidationRules() { IClientValidatable clientValidatable = Attribute as IClientValidatable; if (clientValidatable != null) { return(clientValidatable.GetClientValidationRules(Metadata, ControllerContext)); } return(base.GetClientValidationRules()); }
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules() { IEnumerable<ModelClientValidationRule> results = base.GetClientValidationRules(); IClientValidatable clientValidatable = Attribute as IClientValidatable; if (clientValidatable != null) { results = results.Concat(clientValidatable.GetClientValidationRules(Metadata, ControllerContext)); } return results; }
/// <summary> /// When implemented in a derived class, returns metadata for client validation. /// </summary> /// <returns> /// The metadata for client validation. /// </returns> public override IEnumerable <ModelClientValidationRule> GetClientValidationRules() { // ReSharper disable once SuspiciousTypeConversion.Global IClientValidatable supportsClientValidation = m_Validator as IClientValidatable; if (supportsClientValidation != null) { return(supportsClientValidation.GetClientValidationRules(Metadata, ControllerContext)); } return(Enumerable.Empty <ModelClientValidationRule>()); }
/// <summary> Returns the HTML ID of the specified view model property. </summary> /// <remarks> Based on: http://stackoverflow.com/a/21018963/1637105 </remarks> /// <param name="metadata"> The model metadata. </param> /// <param name="viewContext"> The view context. </param> /// <param name="propertyName"> The name of the view model property whose HTML ID is to be returned. </param> public static string GetHtmlId(this IClientValidatable me, ModelMetadata metadata, ControllerContext context, string propertyName) { var viewContext = context as ViewContext; if (viewContext == null || viewContext.ViewData.TemplateInfo.HtmlFieldPrefix == string.Empty) { return(propertyName); } else { // This is tricky. The "Field ID" returned by GetFullHtmlFieldId is the HTML ID // attribute created by the MVC view engine for the property whose validator is // being set up by the caller of this routine. This code removes the property // name from the Field ID, then inserts the specified property name. // Of course, this only works for elements on the same page as the caller of // this routine! string fieldId = viewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(""); fieldId = fieldId.Remove(fieldId.LastIndexOf("_")); return(fieldId + "_" + propertyName); } }