public static MvcHtmlString ValFor <TModel, TProperty>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, string validationMessage, IDictionary <string, object> htmlAttributes) { ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, new ViewDataDictionary <TModel>()); var name = ExpressionHelper.GetExpressionText(expression); var validations = ModelValidatorProviders.Providers.GetValidators( metadata ?? ModelMetadata.FromStringExpression(name, new ViewDataDictionary()), new ControllerContext()) .SelectMany(v => v.GetClientValidationRules()).ToArray(); List <ValidatorMessage> validatorMessages = new List <ValidatorMessage>(); List <ValidatorMessage> listQ = new List <ValidatorMessage>(); foreach (var validation in validations) { var dictionaryType = DictionaryValidationType.Where(x => x.Key == validation.ValidationType).ToArray(); if (dictionaryType.Any()) { validatorMessages.AddRange(dictionaryType.Select(type => new ValidatorMessage() { Type = type.Value, Message = validation.ErrorMessage.Replace("'", "") })); } else { ValidatorMessage validatorMessage = new ValidatorMessage() { Type = validation.ValidationType, Message = validation.ErrorMessage.Replace("'", "") }; validatorMessages.Add(validatorMessage); } } Console.WriteLine(listQ); string result = ""; //result += GetNgValDirectiveString(validatorMessages); result += GetValidatorDirectivesString(validations); return(MvcHtmlString.Create(result)); //return new MvcHtmlString(result); }
public static MvcHtmlString NgValFor <TModel, TProperty>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, TProperty> > expression, string validationMessage, IDictionary <string, object> htmlAttributes) { ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, new ViewDataDictionary <TModel>()); var name = ExpressionHelper.GetExpressionText(expression); var validations = ModelValidatorProviders.Providers.GetValidators( metadata ?? ModelMetadata.FromStringExpression(name, new ViewDataDictionary()), new ControllerContext()) .SelectMany(v => v.GetClientValidationRules()).ToArray(); List <ValidatorMessage> validatorMessages = new List <ValidatorMessage>(); ValidatorMessage vM = new ValidatorMessage(); foreach (var validation in validations) { var dictionaryType = DictionaryValidationType.Where(x => x.Key == validation.ValidationType).ToArray(); if (dictionaryType.Any()) { validatorMessages.AddRange(dictionaryType.Select(type => new ValidatorMessage() { Type = type.Value, Message = validation.ErrorMessage.Replace("'", "") })); } else { ValidatorMessage validatorMessage = new ValidatorMessage() { Type = validation.ValidationType, Message = validation.ErrorMessage.Replace("'", "") }; validatorMessages.Add(validatorMessage); } } //TagBuilder tag = new TagBuilder("ngVal"); //tag.Attributes.Add("validation", htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(name)); //if (validations.Any()) //{ // foreach (var val in validations) // { // string valResult = GetNgValDirectiveString(validatorMessages); // tag.Attributes.Add("kendo-tooltip k-content", "'" + valResult + "'"); // } //}; //var validatorMessages = validations.ToDictionary(k => k.ValidationType, v => v.ErrorMessage); string result = ""; result += GetNgValDirectiveString(validatorMessages); result += GetValidatorDirectivesString(validations); //string validatorMessagesStr = "{"; //foreach (var validatorMessage in validatorMessages) //{ // validatorMessagesStr += validatorMessage.Key + ":'" + validatorMessage.Value + "',"; //} //validatorMessagesStr += "}"; return(new MvcHtmlString(result)); }