MVC 기본 모델 바인딩 복합 목록에 바인딩
-
22-07-2019 - |
문제
기본 바인더로 중첩 목록에 바인딩하는 데 어려움이 있습니다. LINQ에서 SQL을 사용하고 다음과 같은 데이터 구조가 있습니다.
경쟁 <CompetitionQuestions <CompetitionQuestionChoices
내 html은 다음과 같습니다
<%= Html.Hidden("Competition.Id",Model.Competition.Id) %>
<%=Html.TextBox("Competition.CompetitionName", Model.Competition.CompetitionName )%>
<%= Html.TextBox("Competion.CompetitionQuestions[0].Id", Model.CompetitionQuestion.Id)%>
<%= Html.TextBox("Competion.CompetitionQuestions[0].Question", Model.CompetitionQuestion.Question )%>
<%= Html.TextBox("Competion.CompetitionQuestions[0].CompetitionQuestionChoices[0].Id", Model.CompetitionQuestionChoices.Id)%>
<%= Html.TextBox("Competion.CompetitionQuestions[0].CompetitionQuestionChoices[0].Choice", Model.CompetitionQuestionChoices.Choice)%>
내 컨트롤러에서 나는 시도했다
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Save([Bind(Prefix="Competition")]Competition competition)
{
}
그것은 나에게 경쟁을 일으키지 만 아동 요소는 없습니다
나는 HTML 목록에 경쟁 접두사없이 더 성공적이었다.
UpdateModel(competition,"Competition");
UpdateModel(competition.CompetitionQuestions,"competitionQuestions");
하지만 두 개의 접두사가 있어야하기 때문에 CompetitionQuestionChoices에서 작동하게 할 수 없습니다.
모든 도움이 감사하게 접수됩니다.
해결책
.NET 4를 타겟팅 한 후 .NET 3.5의 할당 메소드의 문제에서 내 문제가 발생하는 것으로 나타났습니다. 바인드는 올바르게 작동했습니다. 여기에 있습니다 게시하다 추가 설명과 함께.
제휴하지 않습니다 StackOverflow