2010-05-19 4 views
1

나는 내 컨트롤러에 다음 코드를 가지고 (편집과 작성) 액션을 만들 수 없습니다 :ASP.NET MVC DropDownList로 SelectedValue 편집 작업에 작동하지만

model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", 213); 

은 "213"중 하나의 ID입니다 페이지를 테스트 용으로 사용합니다.

그리고 이것은 (편집과 작성) 내보기에 : 내가 작성 양식에 갈 때

<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%> 
<%= this.Model.Templates.SelectedValue %> 

, 나는 드롭 다운 목록을 볼 수 있지만 값 태그 = "213"가 아닌이 선택되었습니다. 심지어 SelectedValue를 출력하여 213인지 확인합니다.
편집 폼으로 이동하면 드롭 다운 목록이 표시되고 value = "213"인 태그는이 선택됩니다.

작성 양식에서 "선택됨"속성을 가진 태그가 없습니다.
편집 양식에서 값이 "213"인 태그는 "selected"속성을 갖습니다.

내가 누락 된 항목이 있습니까? 무엇이 이것을 일으킬 수 있습니까? 누구든지 전에이 행동을 보았습니까?

업데이트 : 드롭 다운 목록의 이름을 변경하면 올바르게 작동합니다. 예를 들어,

<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%> 

대신

나는
<%= this.Html.DropDownList("somedropdown", this.Model.Templates)%> 

를하고는했다. 확실하지 않은 이유는 무엇입니까?

답변

1

DataValueField이 문자열 개체이고 거기에 형식이 일치하지 않기 때문에 발생할 수 있습니다. 이 같은

시도 뭔가 :

model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", "213"); 
+0

작동하지 않았다. 그러나 Dropdownlist의 이름을 변경하면 효과가있었습니다. 어떤 아이디어? – davekaro

+0

저장은 이제 작동하지 않습니다. 문제는 아마도 DropDownListFor ('model => model.Page.TemplateId' ...)에 있습니다. 이것은 'EditorForModel' 메소드가 이해하기에 꽤 복잡합니다. 모델에 더미 int 필드를 추가하면 작동합니다.'DropDownlistFor (model => model.DummyField, Model.Templates)' –

+0

FormCollection에서 선택한 값을 수동으로 가져 왔기 때문에 저장이 잘되었습니다. 내 모델에 더미 int 필드를 추가하려고했지만 - 그 중 하나를 작동하지 않았다. 당분간, 나는 일하는 것을 사용할 것입니다. – davekaro

관련 문제