죄송합니다. 반복되는 질문 인 경우 관련된 질문을 스캔하고 명백한 내용이 없었습니다.Entity Framework를 사용하여 ASP.NET MVC (C#)의 DropDown에서 SelectedValue를 다시 가져 오는 중
두 개의 선택 목록과 함께 Entity 객체가있는 EditModel을 사용하고 있습니다. 문제는 일단 POST 액션에 도달하면 두 드롭 다운의 SelectedValues는 브라우저에서 실제로 선택한 항목과 상관없이 모델의 생성자에서 설정 한 기본값과 여전히 동일합니다.
내 생성자는 SelectedValues에 대한 일부 기본값을 설정하지만 이들은 단지 0이고 ""(드롭 다운의 값은 유효하지 않습니다)입니다. 어떻게 든 문제가 돌아 다니는 느낌이 들지만 자세한 내용을 알려 드리겠습니다. 내가 여기 바보 뭔가를 분명 할 수도
<div class="field">
<label for="ID">Organization:</label>
<%= Html.DropDownList("ID", Model.Organizations) %>
</div>
<div class="field">
<label for="Name">Role:</label>
<%= Html.DropDownList("Name", Model.Roles) %>
</div>
:
public class UserAccountModel
{
public UserAccount UserAccountData { get; set; } // Entity from EF
public SelectList Organizations { get; set; }
public SelectList Roles { get; set; }
public UserAccountModel() : this(null)
{
}
public UserAccountModel(UserAccount obj)
{
UserAccountData = (obj == null) ? new UserAccount() : obj;
// default selected value
int orgChildId = (UserAccountData.Organization == null) ? 0 : UserAccountData.Organization.ID;
string roleChildId = (UserAccountData.Role == null) ? "" : UserAccountData.Role.Name;
// go get the drop down options and set up the property binding
using (UserAccountRepository rep = new UserAccountRepository())
{
Organizations = new SelectList(rep.GetOrganizationOptions(), "ID", "ID", orgChildId);
Roles = new SelectList(rep.GetRoleOptions(), "ID", "Name", roleChildId);
}
}
public void UpdateModel()
{
UserAccountData.Organization = Organizations.SelectedValue as Organization;
UserAccountData.Role = Roles.SelectedValue as Role;
}
}
이 뷰의 드롭 다운 부분은 다음과 같습니다
모델의 버전을 박탈입니다. ViewData 사전을 사용할 때 예제가 훨씬 더 직선적이지만 SelectLists에 대한 직선 모델 바인딩을 사용하려는 예제를 너무 많이 찾을 수 없습니다.도움을 주시면 대단히 감사하겠습니다.
크리스
컨트롤러 코드는 어떻게 생겼습니까? – Lazarus
UserAccountData 구조의 일부 코드를 게시 할 수 있습니다. ViewModel에 바인딩하는 경우 선택 목록의 이름이 "UserAccountData.ID"및 "UserAccountData.Name"이어야한다고 생각합니다. UserAccountData – JOBG
UserAccountData는 Entity Framework에서 코드를 생성하는 엔터티입니다. 그러나 내가 언급 했어야 할 또 하나의 정보는 조직과 역할이 DB의 UserAccount 테이블에있는 외래 키라는 것입니다. UserAccount를 추가 할 때 DB의 기존 선택 항목에서 조직 및 역할을 선택할 수 있어야합니다. 위에 나온 모델의 UpdateModel() 메서드를 사용하여 UserAccountData에 선택한 조직 및 역할을 추가했습니다. – Chris