开发者

using MVC Model Binder, how to prevent binding inner complex object properties?

开发者 https://www.devze.com 2023-01-31 02:54 出处:网络
i have the following model public class Person { public int Id {get;set;} [Required()] public string Name {get;set;}

i have the following model

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;}
开发者_Go百科}

in the controller:

 [HttpPost]
        public ActionResult Create(Person entity)
        {
            if (ViewData.ModelState.IsValid)
            {
                ///Some code
                return this.RedirectToAction("Browse");
            }
            else
            {
                return View("Edit", ViewModel);
            }
        }

the problem is that the binder try to validate even the inner address class, but all i care for, is the AddressID but the ModelBinder insist to validate even the City and Street properties.

how can i simply override the original ModelBinder just to validate the ID of the inner object (which is in my situation is AddressID)??

is there a simple way ?


It sounds like your entity and your model have two different requirements. If that is the case, then they should be two different classes. Write a separate Person and address class for MVC to bind to and don't have city or street be required.

Another possible, but less elegant solution, is to not rely on MVC doing the model binding. If you only have a handful of values that may be acceptable, but if you have a lot, then I would use my first suggestion.

0

精彩评论

暂无评论...
验证码 换一张
取 消