ModelState.AddModelError使用
后台:ModelState.AddModelError("userPwd", "请输入密码!");
ModelState是一个字典类型,这句话的作用是向ModelState中添加一条错误信息,第一个参数是Key,第二个参数是Value。
前台:Html.ValidationMessage(key) 或 Html.ValidationSummary() 来显示
对于什么时候使用ModelState.AddModelError(模型错误)的思考与总结:
针对马拉松赛事:
(1)当前的赛事是否存在
var eventMessage = _eventSystemMessageService.GetAllEventSystemMessages().FirstOrDefault(x => x.EventName == currentEventName); //查询出该条数据 if (eventMessage == null)//判断是否存在 { string no_NowEvent = _localizationService.GetResource("Event.EventRegister.No_NowEvent"); //进行语言转换 ModelState.AddModelError("", no_NowEvent);//"不存在当前赛事" InitRegisterModel(model); return View(model); }
(2)证件号码是否存在
var rms = _registratorMessageService.GetAllRegistratorMessages(); //所有数据 var entity = rms.FirstOrDefault(r => r.RegistratorDocumentNumber == model.RegistratorDocumentNumber);//通过输入的数据与数据库的数据匹配得出一条数据 if (entity != null) { string hadDocumentNumber = _localizationService.GetResource("Event.EventRegister.HadDocumentNumber"); ModelState.AddModelError("", hadDocumentNumber);//"证件号码已存在" InitRegisterModel(model); return View(model); }
(3)手机号码是否存在
var phoneValidEnity = rms.FirstOrDefault(r => r.RegistratorPhone == model.RegistratorPhone);//针对手机号查询数据 if (phoneValidEnity != null) { string hadPhoneNumber = _localizationService.GetResource("Event.EventRegister.PhoneNumber"); ModelState.AddModelError("", hadPhoneNumber);//"手机号码已存在" InitRegisterModel(model); return View(model); }
(4)邮箱地址(号码)是否存在
var emailEntity = rms.FirstOrDefault(x => x.RegistratorEmail == model.RegistratorEmail);//通过邮箱查询匹配数据 if (emailEntity != null) { string yourEmailIsUsed = _localizationService.GetResource("Event.EventRegister.YourEmailIsUsed"); ModelState.AddModelError("", yourEmailIsUsed);//"该邮箱地址已被使用,请使用其他邮箱地址" InitRegisterModel(model); return View(model); }
(5)生日不准确
try { Enmodel.RegistratorBirth = new DateTime(model.DateOfBirthYear, model.DateOfBirthMonth, model.DateOfBirthDay); } catch { string birthDayWrong = _localizationService.GetResource("Event.EventRegister.birthDayWrong"); ModelState.AddModelError("", birthDayWrong);// "生日输入不正确" return
.......
总的来说:对于使用模型错误是根据需求来定的,主要起验证作用。
使用场景:
(1)注册时
(2)找回密码时
As you wish.