Bind-Include를 사용하여 개체 속성의 일부만 편집하더라도 포함되지 않은 속성에 대한 유효성 검사는 계속 실행되고 있습니다. 양식 제출. 여기 ASP.Net MVC 3 - 바인드 포함/제외 및 유효성 검사
내 모델의 단순화 된 버전입니다 :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 및 프렌드)를 편집 할 수있는 컨트롤러가 있습니다
[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 및 강력한 형식의 뷰를 사용하고 있습니다.
myString1 필드는 이미 필요에 따라 표시되었지만 삭제되었습니다. 그래서 나는 아직도 그것이 필요한 이유를 이해하지 못한다. 심지어 데이터베이스에서 nullable로 만들었습니다. id 필드에 대해서는 뷰에 MyObjectId에 숨겨진 필드를 넣습니다. 그러나 숨겨진 필드없이 이벤트를 시도한 것과 같은 결과를 얻었으므로 myObject가 업데이트하는 응용 프로그램 "new"을 실제로 이해하지 못합니다. 나는 아직도 "Bind"가 어떻게 작동하고 그것이 무엇을하기로되어 있는지 이해하지 못한다. View Model을 사용하여 솔루션을 시험해 보겠습니다. 좋은 해결책 인 것 같습니다. –