팀이 여러 기관에 소속 될 수 있고 기관이 여러 팀을 보유 할 수있는 다 대다 관계에 대한 양식을 작성하려고합니다.GET 및 POST 값이 메서드 서명에 올바르게 매핑되지 않았습니다.
현재의 문제는 팀을 팀에 할당하는 것과 관련이 있습니다. 팀에서 "이 기관 추가"버튼을 사용하여 컨트롤러에서 "addInstitution"액션을 트리거하는 선택 상자를 만드는 것이 아이디어입니다. 모든 현재 할당 된 기관과 함께 팀/편집 행동에 나는 ViewBag selectList의 객체로 모든 기관을 넣어 가지고,이 올바르게 표시됩니다
@using (Html.BeginForm("AddInstitution", "Team", new { team = Model.ID }, FormMethod.Post))
{
@Html.AntiForgeryToken()
<div>
Add to institution:
</div>
<div>
@Html.DropDownList("institution", (SelectList)ViewBag.Institutions)
</div>
<div>
<ul>
@foreach (var item in Model.Institutions)
{
<li>@item.InstitutionName</li>
}
</ul>
</div>
<div>
<input type="submit" value="Add" />
</div>
}
이 정보를 표시하면 잘 작동합니다. 그러나 GET 또는 POST 매개 변수 (팀 및 기관)가받는 메소드의 매개 변수에 매핑된다는 인상하에 있었기 때문에 팀이 objectRouteValues 양식을 사용하는 이유는 무엇입니까? 선택 상자 값 :
[HttpPost]
[ValidateAntiForgeryToken]
public string AddInstitution(Team team, Institution institution)
{
return "team: " + team.ID + ", institution: " + institution.ID;
}
이 메서드의 매개 변수는 모두 null입니다. 왜 메소드 시그니처에 올바르게 매핑되지 않았는지 알고있는 사람은 누구입니까?
보너스 질문 : 다 대 다 관계에 대한 양식을 작성하기위한 기본 전략입니까, 아니면 더 좋은 방법입니까?
메소드 서명에서 객체 식별자를 "int"로 대체하면 실제로 작동한다는 것을 발견했습니다. 즉, dbcontext에서 객체를 찾아서 업데이트 할 수 있습니다. 그렇지만 서명이있는 ID에서 객체를 인스턴스화 할 수 없습니까? –
두 모델을 같은 방식으로 사용할 수 없다고 생각합니다. –
하나의 모델 만 View에 할당하고 SelectList를 ViewBag에 할당합니다. –