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

user实体:

public class User
{
[Required]
[Display(Name = "用户ID")]
public int Id { get; set; }
[Required]
[StringLength()]
[Display(Name = "用户名")]
public string UserName { get; set; }
[Required]
[StringLength()]
[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 > ))
{
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错误信息的更多相关文章

  1. ModelState 错误信息输出

    在MVC的项目中,我们通常情况下,为了方便(偷懒),会直接使用 !ModelState.IsValid 来判断实体的验证是否正确,但是这样对于用户的体验是不好的,当填写的内容比较多的时候,用户需要自己 ...

  2. 遍历ModelState中存储的错误信息

    在服务器端验证中,有时我们添加了一个ModelError,然后还需要将该信息以JS的形式返回到客户端.如: [HttpPost] public ActionResult Index(LogOnMode ...

  3. ASP.NET MVC遍历ModelState的错误信息

    在ASP.NET MVC中,ModelState中包含了验证失败的错误信息,具体被存储在ModelState.Values[i].Errors[j].ErrorMessage属性中.当然,通过打断点, ...

  4. HttpClient读取ASP.NET Web API错误信息的简单方法

    在C#中,用HttpClient调用Web API并且通过Content.ReadAsStringAsync()读取响应内容时,如果出现500错误(InternalServerError),会得到一个 ...

  5. odbc错误信息一览表

    ODBC 错误信息 根据 X/Open 和 SQL Access Group SQL CAE 规范 (1992) 所进行的定义,SQLERROR 返回 SQLSTATE 值.SQLSTATE 值是包含 ...

  6. MVC model验证 获取验证错误信息

    public static class ModelStateExtensions { /// <summary> /// 获取model验证错误信息 /// </summary> ...

  7. 使用jQuery异步传递Model到控制器方法,并异步返回错误信息

    需要通过jquery传递到控制器方法的Model为: public class Person { public string Name { get; set; } public int Age { g ...

  8. 利用huson的日志获取编译错误信息的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 使用hudson编译一百多个VC工程,输出的日志有6M之大,摆在我面前的一个问题是如何利用这个日志信息来获取编译错误信 ...

  9. 个人永久性免费-Excel催化剂功能第55波-Excel批注相关的批量删除作者、提取所有批注信息等

    Excel里的批注,许多人很喜欢用,但批注真的值得我们大量使用吗?批注的使用场景在哪里?这些问题可能更值得花时间来思考下.同样因为不规范地使用批注,也带出了一大堆的后续擦屁股的事情来,从批注中找回有价 ...

随机推荐

  1. HDU4046--Panda(树状数组)

    Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  2. Python---初识堡垒机

    在学习堡垒机之前,我们需要首先了解下Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作. SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: ...

  3. java 接口测试,使用excel做数据驱动(二)

    承接上篇. 改变我们的测试驱动方式,灵活设置测试用例. 数据驱动测试 数据驱动测试的核心是: 测试数据与测试脚本分离,实现测试脚本参数化, 提高测试脚本的可重用性.在自动化功能测试中如果灵活使用数据源 ...

  4. Common Data Service (CDS) 初探

    作者:陈希章 发表于 2017年12月16日 前言 Common Data Service(以下简称为CDS),通用数据服务是一个创新性的基础功能,这是微软试图打造一个全新的基于SaaS模式的数据服务 ...

  5. C++ size_t 和size_type的区别

    为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned size_t是全局定义的类型:size_type是STL类中定义的类型属性,用 ...

  6. selenium webdriver使用click一直失效问题的几种解决方法

    想要爬取动态网页,很莫名的click失效.被这个问题困扰了很久,基本上把网上提到的所有方法试遍了,最终终于有个方法成功了,在这里总结一下. 这是我想要点击的网页,初始时实在0.5km上,它的class ...

  7. LABjs、RequireJS、SeaJS 哪个最好用?为什么?

    感谢玉伯在知乎的奉献,下面全文转载:http://www.zhihu.com/question/20342350/answer/14828786 LABjs 的核心是 LAB(Loading and ...

  8. 》》Jqurey html

    第1部分:jQuery HTML 1.获取内容和属性 -- 获取内容: text():设置或获取所选元素的文本内容 html():设置或获取所选元素的内容(包括HTML标记) val():设置或获取表 ...

  9. 老生常谈之Block

    前面有一篇介绍Block的博客,主要介绍了Block的简单使用技巧.这篇博客主要更加深入地了解一下Block.包括:Block的实现.__Block的原理以及Block的存储域三方面. Block的实 ...

  10. 【java设计模式】【行为模式Behavioral Pattern】迭代器模式Iterator Pattern

    package com.tn.pattern; public class Client { public static void main(String[] args) { Object[] objs ...