2010-04-29 9 views
0

간단한 드롭 다운 목록을 설정하려고했지만 모델에 바인딩 할 수없는 것 같습니다. Asp.Net MVC 및 nhibernate를 사용하고 있습니다.MVC 드롭 다운 목록이 모델에 바인딩되지 않았습니다.

<%= Html.DropDownListFor(model => model.Project, (IEnumerable<SelectListItem>)ViewData["Projects"], " -- Select -- ", new { name = "Project" })%> 

내가 이렇게 같은 선택 목록 설정 :

내 드롭 다운 목록과 같이 선언이 드롭 다운 벌금 선택 목록을 결합하는 것

ViewData["Projects"] = new SelectList(projectRepository.GetAll(), "EntityGUID", "Name", editEntity.Project); 

을하지만 SelectedValue 설정되지 않았습니다. 가 기본 --- 선택 --- 내가이 데이터를 저장할 때, 드롭 다운 모델에 결합하지 않습니다 또한

로 나타나, 내가 수동으로 개체를 설정해야합니다 같은 저장하기 :

entity.Project = projectRepository.GetById(new Guid(Request["Project"].ToString())); 

나는이 아이템이 내 모델에 직접 바인딩되도록 올바른 메스를 가져 왔다고 믿는다. 여기에 누락 된 것이 있습니까? 시간에 대한

많은 감사, 로드

답변

6

OMG 내가 문제를 발견 ........

그것은 설정하는 삼일 나에게 촬영하고있다 :

<%= Html.DropDownListFor(model => model.Aspect, (IEnumerable<SelectListItem>)ViewData["AspectTypes"])%> 

로 :

<%= Html.DropDownListFor(model => model.Aspect.EntityGUID, (IEnumerable<SelectListItem>)ViewData["AspectTypes"])%> 

model.Aspect * * .EntityGUID ** 객체 자체가 아니라 객체 guid에 드롭 다운을 바인딩해야했습니다. Doh .... 고통을 느끼고있는 Im, 따라 잡기 위해 많은 작업.

감사합니다.

+0

이 문제는 텍스트가 아닌 ID 속성 만 바인딩한다는 것입니다. 맞습니까? – im1dermike

0

이 코드가 나에게 좋아 보인다 때문에 그냥 직감하지만 난 당신이 당신의 SelectList을 정의 할 때 등 매개 변수를 포함 할 필요가 있다고 생각하지 않습니다. 이 필드를 설정하면 정상적인 흐름 (모델 바인딩 무시)이 흐트러 질 수 있으며 DropDownList을 바인딩 한 적이없고 SelectListSelectedValue 세트를 가져 왔습니다.

제거하고 시도해보십시오.

SelectList(projectRepository.GetAll(), "EntityGUID", "Name"); 

또한 I asked a question 다시 유용하게 찾을 수 있습니다 MVC2에서 DropDownList을 구현하는 방법에 대해 잠시.

+0

감사합니다. Kelsey, 문서를 확인하겠습니다. SelectedValue 매개 변수는 마지막 시도 일뿐입니다. 전체적으로 나는 그것을 사용하지 않았다. 편집 폼의 값을 미리 선택하려고했습니다. 내 nhibernate 매핑에서 자식 개체를 설정하지 않는 것이 문제 일 수 있다고 생각합니다. 나는 그 길을 내려다 보겠다. –

+0

nhibernate 매핑에서 Lazy loading을 false로 설정하지 않으면이 오류가 발생합니다. 초기화 중 [AgileThought.ERP.Domain.Property.Project # 8260fd30-97e7-46f4-818a-689f1e65a91c] - 프록시를 초기화 할 수 없습니다. 세션이 없습니다. –

+0

그리고 편집하려고 할 때 다음과 같은 모델 유효성 검사 오류가 발생합니다. 'fd38c877-706f-431d-b624-1269184eeeb5'값이 유효하지 않습니다. 이것은 내 GUID를 객체에 푸시하려고 함을 나타냅니다. 내 머리카락 빼기 ... –

관련 문제