分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

.net 4.5 webform 提取ModelState错误信息

发布时间:2023-09-06 01:34责任编辑:林大明关键词:暂无标签

.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也可以使用了。。爽啊

.net 4.5 webform 提取ModelState错误信息

原文地址:https://www.cnblogs.com/wxb8/p/8215028.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved