ModelState是一个字典对象,它包含模型和模型构建验证的状态。
ModelState.AddModelError("MyKey", "My Error Message"); AddModelError(),它将指定的错误消息添加到与指定键(MyKey)链接的模型状态字典的错误集合中。
为什么没有ModelState.AddModelSucces("MyKey", "My Error Message")?有人能告诉我如何在视图中显示成功信息吗?
ModelState.AddModelSucces("MyKey", "My Error Message") ???发布于 2013-11-28 09:22:02
您可以按照与Html.ValidationMessageFor相同的行创建helper扩展方法。
下面是一个例子,说明我很快就做了些什么,但是你可以进一步扩展它。看看http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/Html/ValidationExtensions.cs,了解更多的想法。
这将输出一个带有css类span标记的field-validation-valid。
<span class="field-validation-valid">My success message</span>视图
@Html.ValidationSuccessMessageFor(m => m.MyProperty, "My success message")可拓方法
public static MvcHtmlString ValidationSuccessMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return ValidationSuccessMessageFor(htmlHelper, expression, null, new RouteValueDictionary());
}
public static MvcHtmlString ValidationSuccessMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string validationMessage)
{
return ValidationSuccessMessageFor(htmlHelper, expression, validationMessage, new RouteValueDictionary());
}
public static MvcHtmlString ValidationSuccessMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string validationMessage, object htmlAttributes)
{
return ValidationSuccessMessageFor(htmlHelper, expression, validationMessage, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
}
public static MvcHtmlString ValidationSuccessMessageFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string validationMessage, IDictionary<string, object> htmlAttributes)
{
return ValidationMessageHelper(htmlHelper, ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData), ExpressionHelper.GetExpressionText(expression), validationMessage, htmlAttributes);
}
private static MvcHtmlString ValidationMessageHelper(this HtmlHelper htmlHelper, ModelMetadata modelMetadata, string expression, string validationMessage, IDictionary<string, object> htmlAttributes)
{
var modelName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expression);
FormContext formContext = htmlHelper.ViewContext.ClientValidationEnabled ? htmlHelper.ViewContext.FormContext : null;
if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName) && formContext == null)
{
return null;
}
var modelState = htmlHelper.ViewData.ModelState[modelName];
if (modelState == null || (modelState != null && (modelState.Errors == null || modelState.Errors.Count > 0)))
{
return null;
}
var builder = new TagBuilder("span");
builder.MergeAttributes(htmlAttributes);
builder.AddCssClass(HtmlHelper.ValidationMessageValidCssClassName);
if (!String.IsNullOrEmpty(validationMessage))
{
builder.SetInnerText(validationMessage);
}
return MvcHtmlString.Create(builder.ToString(TagRenderMode.Normal));
}https://stackoverflow.com/questions/20260041
复制相似问题