используя MVC Model Binder, как предотвратить привязку свойств внутреннего сложного объекта? - PullRequest
1 голос
/ 14 декабря 2010

у меня есть следующая модель

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 настаивает на проверке даже свойств City и Street.

как я могу просто переопределить исходный ModelBinder просто для проверки идентификатора внутреннего объекта (который в моей ситуации - AddressID) ??

Есть ли простой способ?

1 Ответ

1 голос
/ 14 декабря 2010

Похоже, ваша сущность и ваша модель имеют два разных требования. Если это так, то они должны быть двух разных классов. Напишите отдельный объект Person и address для MVC, к которому нужно привязаться, и не указывайте город или улицу.

Другое возможное, но менее изящное решение - не полагаться на MVC, выполняющую привязку модели. Если у вас есть только несколько значений, которые могут быть приемлемыми, но если у вас их много, я бы воспользовался своим первым предложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...