2011-01-29 1 views
0

ASP.NET MVC에서 모델링하는 데 어려움을 겪고있는 일대 다 관계의 데이터베이스가 있습니다. 단순화를 위해 테이블 ​​A가 사무실 건물을 나타내고 테이블 B가 직원을 나타내고 테이블 C가 직원과 건물간에 일대 다 관계를 만들어 특정 직원이 특정 건물에 액세스 할 수 있음을 나타냅니다.동적 수의 CheckBox가있는 ASP.NET MVC 모델

Employee 
EmployeeId - int 
FirstName - string 
LastName - string 

Office 
OfficeId - int 
Location - string 

EmployeeOffice 
EmployeeId - int 
OfficeId - int

신입 사원이 나올 때, 나는 그들이 접근 할 수있는 모든 사무실 건물에 배정하고 싶습니다. 이를 위해 UI는 각 개별 사무실 건물에 대한 확인란을 호출합니다. 상자를 선택하면 사용자가 관련 사무실 건물에 액세스 할 수 있습니다.

[ ] - Office 1 
[ ] - Office 2 
[ ] - Office 3 
[ ] - Office 4

내 관심사는 사무실이 역동적이어야한다는 것입니다. 즉, 사무실 (또는 사무실)은 언제든지 오거나 갈 수 있습니다.

모델은 실제로 내가 묘사 한 것보다 더 복잡합니다. 다음과 같이 따라서, 나는 (주석 포함) 속성이 모두 포함 된 CreateEmployeeViewModel을 가지고 :

public class CreateEmployeeViewModel 
{ 
    public string FirstName 
    { 
     get; 
     set; 
    } 

    public string LastName 
    { 
     get; 
     set; 
    } 

    public IDictionary Offices 
    { 
     get; 
     private set; 
    } 


    public CreateEmployeeViewModel(IDictionary offices) 
    { 
     Offices = offices; 
    } 
}

내보기 유사한 내가 클릭하면

<div> 
    <%: Html.LabelFor(model => model.FirstName) %> 
</div> 
<div> 
    <%: Html.TextBoxFor(model => model.FirstName) %> 
    <%: Html.ValidationMessageFor(model => model.FirstName) %> 
</div> 

<div> 
    <%: Html.LabelFor(model => model.LastName) %> 
</div> 
<div> 
    <%: Html.TextBoxFor(model => model.LastName) %> 
    <%: Html.ValidationMessageFor(model => model.LastName) %> 
</div> 

<!-- This is really ugly, so I welcome any suggested updates --> 
<% foreach (KeyValuePair<int, string> office in Model.Offices) { %> 
    <label for="Office<%: office.Key %>"><%: office.Value %></label> 
    <input id="Office<%: office.Key %>" type="checkbox" value="<%: office.Key %>" /> 
<% } %>

은 폼의 제출 '버튼을 다음, 나는에 기대 확인란을 선택하는 것 외에도 강력하게 형식화 된 뷰 모델을 가져와 사용자를 할당 할 사무실을 알 수 있습니다. 나는 다음과 같은 내 액션 메소드 생성 : 추가

public ActionResult Create(CreateUserViewModel user, FormCollection collection)

내가 내가 양식을 얻을 수있는 기대했다되는 추가 FormCollection 개체에 대한 이유는 값 을 뷰 모델에있는 것과 (예를 들어, 확인란). 그러나 불행히도 컬렉션에는 정보 만 포함되어 있습니다.

ASP.NET MVC 2.0에서이 디자인으로 양식을 처리하는 올바른 방법은 무엇입니까?

답변

1

체크 박스 입력 요소에 "name"속성을 추가해야합니다. 그렇지 않으면 FormCollection에 표시되지 않습니다.

+0

나는 공식적으로 휴식이 필요합니다! 나는 그것을 놓쳤다는 것을 믿을 수 없다. 정말 고맙습니다! – senfo