Хотя я использую Bind-Include для редактирования только части свойств объекта, проверка для свойств, которые не включены, все еще запускается, состояние моей модели недопустимо после отправки формы.
Вотупрощенная версия моей модели:
public partial class MyObject
{
public int MyObjectId { get; set; }
public int personId { get; set; }
public string myString1 { get; set; }
public Nullable<int> friend1Id { get; set; }
public Nullable<int> friend2Id { get; set; }
public virtual People person { get; set; }
public virtual People Friend1 { get; set; }
public virtual People Friend2 { get; set; }
}
И у меня есть контроллер для редактирования только друзей (Friend1 и Friend2) для этого объекта, который выглядит следующим образом:
[HttpPost]
public ActionResult Assignation([Bind(Include = "friend1Id,friend2Id")]MyObject myObject)
{
if (ModelState.IsValid)
{
db.Entry(myObject).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.friend1Id = new SelectList(db.People, "personId", "Name", myObject.friend1Id);
ViewBag.friend2Id = new SelectList(db.Divisions, "personId", "Name", myObject.friend2Id);
return View(myObject);
}
На мой взглядУ меня просто есть 2 выпадающих списка для выбора друзей и кнопка Сохранить.Однако когда я нажимаю «Сохранить», моя модель становится недействительной.Если я просматриваю коллекции свойств внутри ModelState, я нахожу сообщение об ошибке, указывающее, что myString1 требуется.myString1 имеет тип nvarchar (100) NOT NULL в базе данных, но я бы подумал, что для этого поля не будет проверки, так как я не включил его в свою привязку.Мое понимание Bind неверно?Пожалуйста, потерпите меня, я новичок в ASP.Net MVC.Я использую MVC 3 и EF 4.1 и строго типизированные представления.