목록 인 속성이있는 모델이 있습니다. MyObjects는 단순히 id, description 및 선택된 부울 속성을가집니다.체크 박스 목록에서 값을 반환하는 ASP.Net MVC
내보기에는 체크 박스로 항목을 표시 할 수있었습니다. 나는 다음을 통해 이것을했다 :
<%foreach (var cat in Model.DefaultCategories)
{%>
<tr>
<td>
<%=cat.Category %>
</td>
<td>
<%=Html.CheckBoxFor(x=>cat.Selected) %>
</td>
</tr>
<%
}%>
</table>
그러나 문제가있다. 그들은 모두 같은 이름으로 렌더링 될 때 끝납니다. 여기 내 목록의 일부입니다 :
<tr>
<td>
Medical
</td>
<td>
<input id="cat_Selected" name="cat.Selected" type="checkbox" value="true" /><input name="cat.Selected" type="hidden" value="false" />
</td>
</tr>
<tr>
<td>
Salary
</td>
<td>
<input checked="checked" id="cat_Selected" name="cat.Selected" type="checkbox" value="true" /><input name="cat.Selected" type="hidden" value="false" />
</td>
</tr>
그들은 모두 "cat.Selected"라고 명명되었습니다.
어떻게 해결할 수 있습니까?
그리고 제출할 때 반복해야합니다. 다른 이름으로, 나는 내 HttpPost 방법으로 그들을 얻을 수 있습니다 가정
[HttpPost]
public ActionResult Modify(int id, FormCollection formValues)
{
PayeeDto p = new PayeeDto { Name = Request.Form["name"], PayeeId = id };
Services.PayeeServices.Save(p);
return RedirectToAction("Index");
}
는 FormCollection는 다른 이름을 가질 것인가? 현재로서는 '고양이 선택 항목'이 하나뿐입니다.
감사합니다 - 당신은 어쩌면 Mapper.Map을 설명 할 수 있습니까? 흥미로운 것 같습니다. – Craig
@cdotlister에서 [AutoMapper] (http://automapper.codeplex.com/)를 살펴보십시오. 그러나 이것은 당신이 사용할 수있는 어떤 매핑 기술이 될 수도 있습니다 (수동으로 작성한 것조차도). 컨트롤러 액션은 뷰 모델을 모델로 매핑하여 리포지토리에 전달해야하는 매개 변수로 받아야합니다. 이 매핑이 어떻게 발생하는지에 대해서는 여기에서 다루지 않습니다. –