首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelState.AddModelError为什么没有ModelState.AddModelSuccess?

ModelState.AddModelError为什么没有ModelState.AddModelSuccess?
EN

Stack Overflow用户
提问于 2013-11-28 07:23:03
回答 1查看 1.9K关注 0票数 0

ModelState是一个字典对象,它包含模型和模型构建验证的状态。

代码语言:javascript
复制
ModelState.AddModelError("MyKey", "My Error Message");   

AddModelError(),它将指定的错误消息添加到与指定键(MyKey)链接的模型状态字典的错误集合中。

为什么没有ModelState.AddModelSucces("MyKey", "My Error Message")?有人能告诉我如何在视图中显示成功信息吗?

代码语言:javascript
复制
ModelState.AddModelSucces("MyKey", "My Error Message") ???
EN

回答 1

Stack Overflow用户

发布于 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

代码语言:javascript
复制
<span class="field-validation-valid">My success message</span>

视图

代码语言:javascript
复制
@Html.ValidationSuccessMessageFor(m => m.MyProperty, "My success message")

可拓方法

代码语言:javascript
复制
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));
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20260041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档