zoukankan      html  css  js  c++  java
  • .net 4.5 webform 提取ModelState错误信息

    .net4.5以后,webform也可以使用模型绑定和模型验证。

    user实体:

    public class User
        {
            [Required]
            [Display(Name = "用户ID")]
            public int Id { get; set; }
            [Required]
            [StringLength(20)]
            [Display(Name = "用户名")]
            public string UserName { get; set; }
            [Required]
            [StringLength(20)]
            [Display(Name = "用户密码")]
            public string PassWord { get; set; }
        }

     模型自动绑定和验证: 

    var user = new Model.User();
    var formValueProvider = new FormValueProvider(ModelBindingExecutionContext);
    TryUpdateModel(user, formValueProvider);
    //模型验证
    if (ModelState.IsValid) { Response.Write(user.UserName); }

    前台接收验证信息 

    <asp:ValidationSummary runat="server" EnableViewState="True"/>

    如果不用服务器控件,接受错误信息可以这么做

    建立名为ModelStateErrorHandler的ModelState扩展方法

    public static class ModelStateErrorHandler
        {
            /// <summary>
            /// ModelState扩展,取得Dictionary类型的错误信息
            /// </summary>
            /// <param name="errDictionary"></param>
            /// <returns>
            /// Key: 字段名
            /// Value: 字段错误信息
            /// </returns>
            public static Dictionary<string, string> GetModelErrors(this ModelStateDictionary errDictionary)
            {
                var errors = new Dictionary<string, string>();
                foreach (var pair in errDictionary.Where(k => k.Value.Errors.Count > 0))
                {
                    var er = string.Join(",", pair.Value.Errors.Select(e => e.ErrorMessage));
                    errors.Add(pair.Key, er);
                }
                return errors;
            }
            /// <summary>
            /// ModelState扩展,取得string类型的错误信息
            /// </summary>
            /// <param name="errDictionary"></param>
            /// <returns>
            /// 以|分割错误信息
            /// </returns>
            public static string GetModelErrorsString(this ModelStateDictionary errDictionary)
            {
                var errorsBuilder = new StringBuilder();
                var errors = errDictionary.GetModelErrors();
                foreach (var key in errors)
                {
                    errorsBuilder.AppendFormat("{0}:{1}|", key.Key, key.Value);
                }
                return errorsBuilder.ToString();
            }
        }

    调用:

    var errorsDictionary = ModelState.GetModelErrors();
    string jsonstr = new JavaScriptSerializer().Serialize(errorsDictionary);
    var errorsString = ModelState.GetModelErrorsString();

    在模板解析json或者字符串即可。

    .net 4.5 以后很多mvc的特性webform也可以使用了。。爽啊

  • 相关阅读:
    Java内存回收
    Android四大基本组件介绍与生命周期
    JAVA中获取当前系统时间
    jquery如何判断元素是否被点击_百度知道
    css控制div显示/隐藏方法及2种方法比较原码
    点击图标不断震动效果
    jquery 如何动态添加、删除class样式方法介绍_jquery_脚本之家
    HTML5绘制矩形和圆形并且还有获取在这个图层内的坐标的思路和代码
    Attribute name invalid for tag form according to TLD异常解决办法_gaigai_百度空间
    html5绘图
  • 原文地址:https://www.cnblogs.com/wxb8/p/8215028.html
Copyright © 2011-2022 走看看