.net 4.5 webform 提取ModelState错误信息
.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错误信息的更多相关文章
- ModelState 错误信息输出
在MVC的项目中,我们通常情况下,为了方便(偷懒),会直接使用 !ModelState.IsValid 来判断实体的验证是否正确,但是这样对于用户的体验是不好的,当填写的内容比较多的时候,用户需要自己 ...
- 遍历ModelState中存储的错误信息
在服务器端验证中,有时我们添加了一个ModelError,然后还需要将该信息以JS的形式返回到客户端.如: [HttpPost] public ActionResult Index(LogOnMode ...
- ASP.NET MVC遍历ModelState的错误信息
在ASP.NET MVC中,ModelState中包含了验证失败的错误信息,具体被存储在ModelState.Values[i].Errors[j].ErrorMessage属性中.当然,通过打断点, ...
- HttpClient读取ASP.NET Web API错误信息的简单方法
在C#中,用HttpClient调用Web API并且通过Content.ReadAsStringAsync()读取响应内容时,如果出现500错误(InternalServerError),会得到一个 ...
- odbc错误信息一览表
ODBC 错误信息 根据 X/Open 和 SQL Access Group SQL CAE 规范 (1992) 所进行的定义,SQLERROR 返回 SQLSTATE 值.SQLSTATE 值是包含 ...
- MVC model验证 获取验证错误信息
public static class ModelStateExtensions { /// <summary> /// 获取model验证错误信息 /// </summary> ...
- 使用jQuery异步传递Model到控制器方法,并异步返回错误信息
需要通过jquery传递到控制器方法的Model为: public class Person { public string Name { get; set; } public int Age { g ...
- 利用huson的日志获取编译错误信息的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 使用hudson编译一百多个VC工程,输出的日志有6M之大,摆在我面前的一个问题是如何利用这个日志信息来获取编译错误信 ...
- 个人永久性免费-Excel催化剂功能第55波-Excel批注相关的批量删除作者、提取所有批注信息等
Excel里的批注,许多人很喜欢用,但批注真的值得我们大量使用吗?批注的使用场景在哪里?这些问题可能更值得花时间来思考下.同样因为不规范地使用批注,也带出了一大堆的后续擦屁股的事情来,从批注中找回有价 ...
随机推荐
- Redis各个数据类型的使用场景
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). Redis列表命令 参考:http://www.r ...
- Mysql服务器SQL模式 (官方精译)
MySQL服务器可以在不同的SQL模式下运行,并且可以根据sql_mode系统变量的值对不同的客户端应用不同的模式.DBA可以设置全局SQL模式以匹配站点服务器操作需求,并且每个应用程序可以将其会话S ...
- Android破解学习之路(三)——Android游戏 切水果破解
经过前两篇破解教程,想必大家也是明白了破解的简单流程了. 先对APP进行试用,了解APP运行的大概流程,之后从APP中找出关键字(一般的关键字差不多都是支付失败),之后使用Androidkiller进 ...
- Mybatis框架解析之Builder解析
首先我们从builder这个类入手,首先我们注意到BaseBuilder,其实它的本质上市一个抽象类,它从本质上抽象出了Builder的一切,我猜想这里一定使用了建造者模式,但是这个抽象类里面居然没有 ...
- C# DropDownList 绑定枚举类
第一种 DropDownList_Franchiser_Type.DataSource = ListTypeForEnum(); DropDownList_Franchiser_Type.DataVa ...
- Linux下一次删除百万文件
Linux下一次删除百万文件 线上环境遇到的一个问题,文件数量过多,执行rm命令报错 # rm -f ./* -bash: /bin/rm: Argument list too long 根据报错检查 ...
- 黑马day16 jquery&属性过滤选择器
属性过滤选择器的过滤规则是通过元素的属性来获取对应的元素 .[attribute] 使用方法: $("div[id]") ; 返回值 集合元素 说明:匹配包括给定属性的元素.样 ...
- Golang开发环境搭建(Notepad++、LiteIDE两种方式以及martini框架使用)
本文介绍两种Golang的开发环境一种基于notepad++.还有一种基于liteide. 1.下载Golang语言的pkg:http://golangtc.com/download 直接点击安装,一 ...
- mapreduce作业reduce被大量kill掉
之前有一段时间.我们的hadoop2.4集群压力非常大.导致提交的job出现大量的reduce被kill掉.同样的job执行时间比在hadoop0.20.203上面长了非常多.这个问题事实上是redu ...
- linux vi/vim编辑文件显示行号
方法一(最尴尬的方法): 1.显示当前行行号,在VI的命令模式下输入 :nu 2.显示所有行号,在VI的命令模式下输入 :set nu #这是:set number 的简写 方法二(最好的方法): 使 ...