我有以下型号
public class Person
{
public int Id {get;set;}
[Required()]
public string Name {get;set;}
[Required()]
public Address Address {get;set;}
}
public class Address
{
public int Id {get;set;}
[Required()]
public string City {get;set;}
[Required()]
public string Street {get;set;}
}
在控制器中:
[HttpPost]
public ActionResult Create(Person entity)
{
if (ViewData.ModelState.IsValid)
{
///Some code
return this.RedirectToAction("Browse");
}
else
{
return View("Edit", ViewModel);
}
}
问题是绑定器尝试验证内部地址类,但我所关心的是AddressID 但ModelBinder坚持要验证城市和街道的属性。
我怎样才能简单地覆盖原始的ModelBinder,只是为了验证内部对象的ID(在我的情况下是AddressID)?
有一个简单的方法吗?
答案 0 :(得分:1)
听起来你的实体和你的模型有两个不同的要求。如果是这种情况,那么它们应该是两个不同的类。为MVC写一个单独的Person和address类来绑定,并且不需要城市或街道。
另一种可能但不太优雅的解决方案是不依赖于MVC进行模型绑定。如果你只有一些可以接受的值,但如果你有很多,那么我会使用我的第一个建议。