ASP.NET MVC 응용 프로그램 내에서 Linq를 SQL에 사용하고 있습니다. 모델은 Options 테이블에 대한 외래 키 링크가있는 Decisions 테이블로 구성됩니다 (한 가지 결정, 많은 옵션). 따라서 Model을 통해 Decision.Options 속성을 통해 Options 컬렉션에 액세스 할 수 있습니다. 내 사용자가 다른 Decision 속성을 업데이트하는 것과는 다른보기에서 Decision의 Options 컬렉션을 업데이트 할 수있게하려고합니다. Decision 객체를 업데이트하기 위해 Options 컬렉션을 다시 컨트롤러로 전달하는 가장 좋은 방법은 무엇입니까? 여기에 코드입니다 :ASP.NET 모델 바인더 자식 테이블 업데이트 질문
컨트롤러는 옵션에 대한 의사 결정 모델 보냅니다보기 :
사용자가 수정 제출에 대한 내보기 페이지가 바로 옵션의 이름 필드를 나열//
// GET /Decisions/Options/5
[Authorize]
public ActionResult Options(int id)
{
Decision decision = decisionRepository.GetDecision(id);
return View(decision);
}
:
<% using (Html.BeginForm())
{%>
<div id="answers">
<table>
<% int i = 0; %>
<% foreach (var item in Model.Options)
{ i += 1;
%>
<tr>
<td>
<label>Option #<%= i%>: </label>
<%= Html.TextBox("Option.Name", item.Name)%>
</td>
</tr>
<% } %>
</table>
<input type="submit" name="button" value="Back" />
<input type="submit" name="button" value="Next" />
</div>
<% } %>
을 여기에 POST 옵션 동작에 대한 컨트롤러 코드입니다.
// POST /Decisions/Options/4
[AcceptVerbs(HttpVerbs.Post), Authorize]
public ActionResult Options(int id, string button, Decision d)
{
Decision decision = decisionRepository.GetDecision(id);
if (decision == null)
return View("NotFound");
if (button == "Back")
{
return RedirectToAction("Edit", new { id = decision.DecisionID });
}
//Update the options in the decision model
//TODO: What's the best way to update the Decision.Options parameter?
//Save options and move on to factors
UpdateModel(decision);
decisionRepository.Save();
return RedirectToAction("Factors", new { id = decision.DecisionID });
}
POST 동작 옵션에 대한 이온, 옵션 항목의 컬렉션을 다시 전달하는 가장 좋은 방법은 무엇입니까?
Save 메서드를 호출하기 전에 FormCollection을 직접 사용하여 Decision.Options에 할당 할 EntitySet으로 변환 해 보았습니다. 위 코드는 Decision 객체가 전달되었지만 Options 컬렉션은 항상 null이므로 내 주석이 달린 TODO입니다.
Decision 개체를 직접 편집하는 데 사용하도록되어 있지만 모델 바인더 또는 FormCollection을 사용하여 모델에서 자식 테이블을 업데이트하는 데 문제가 있습니다. 어떤 도움이라도 대단히 감사합니다!
감사! 배열이 0 기반이어야한다는 것을 기억하고 나서 Action 메서드에서 옵션 배열을 마침내 얻을 수있었습니다! 나는 그것들을 하나에서 시작했다. 다시 한 번 감사드립니다! – kwgainey