我正在使用ASP.NET MVC,MySQL和NHibernate开发一个小站点。
我有一个Contact类:
[ModelBinder(typeof(CondicaoBinder))]
public class Contact {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual int Age { get; set; }
}
模型活页夹:
public class ContactBinder:IModelBinder {
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
Contact contact = new Contact ();
HttpRequestBase form = controllerContext.HttpContext.Request;
contact.Id = Int16.Parse(form["Id"]);
contact.Name = form["Name"];
contact.Age = Int16.Parse(form["Age"]);
return contact;
}
}
此外,我有一个表单来使用此操作更新我的数据库:
public ActionResult Edit([ModelBinder(typeof(ContactBinder))] Contact contact) {
contactRepo.Update(contact);
return RedirectToAction("Index", "Contacts");
}
直到这里,一切正常。但在更新我的联系人之前,我必须实施表单验证。
我的问题是:我应该在哪里实施此验证?在ActionResult方法或Model Binder中?或者其他地方?
非常感谢。
答案 0 :(得分:2)
答案 1 :(得分:0)
我是史蒂夫桑德森的第二部,他的书很棒。
我真的很喜欢Rob Conery,Scott Hanselman,Phil Haack,Scott Guthrie写的书呆子晚餐方法。基本上,每个实体中都有一个方法可以验证商业逻辑。该方法返回包含字段/错误消息的RuleViolations列表。您还会为了方便而公开bool值。
您可以在此处获得免费章节:Nerd Dinner Chapter
答案 2 :(得分:0)
我认为这种情况最好遵循微软的建议Validation with Service Layer