내 mvc 응용 프로그램에서 일부 바인딩 작업을 원합니다. 중첩 된 속성은 asp.net mvc의 RC1 릴리스에서 기본 모델 바인더에 의해 자동으로 바인딩되지 않습니다.asp.net mvc에서 중첩 된 속성의 모델 바인딩
public class Contact{
public int Id { get; set; }
public Name Name { get; set; }
public string Email { get; set; }
}
으로 Name
가 정의 :
using(Html.BeginForm()){
Html.Textbox("Name.Forename", Model.Name.Forename);
Html.Textbox("Name.Surname", Model.Name.Surname);
Html.Textbox("Email", Model.Email);
Html.SubmitButton("save", "Save");
}
내 컨트롤러 액션은 다음과 같이 정의된다 : 내 뷰의 라인을 따라 정의된다
public class Name{
public string Forename { get; set; }
public string Surname { get; set; }
}
나는 다음과 같은 클래스 구조를 가지고 :
public ActionResult Save(int id, FormCollection submittedValues){
Contact contact = get contact from database;
UpdateModel(contact, submittedValues.ToValueProvider());
//at this point the Name property has not been successfully populated using the default model binder!!!
}
Email
속성은 성공적으로 바인딩되지만 Name.Forename
또는 Name.Surname
속성은 바인딩되지 않습니다. 아무도 이것이 기본 모델 바인더를 사용하여 작동해야하는지 그리고 내가 잘못한 일을하고 있는지, 아니면 작동하지 않고 모델 객체에 중첩 된 속성을 바인딩하기 위해 내 자신의 코드를 롤백해야하는지 알 수 있습니까?
위대한 작품입니다, 감사합니다 tvanfosson. –
SingleOrDefault는 lamda 표현식으로 직접 호출 할 수 있습니다 –
@PhilippM 당신은 절대적으로 옳았습니다. – tvanfosson