.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