2012-01-17 4 views
1

SelectExtension의 DropDownList 메서드를 사용할 때 이상한 동작이 발견되었습니다. IEnumerable < SelectListItem> 중 하나가있는 그들 중 하나가 있습니다 선택한 속성은 'true'로 설정됩니다. 그러나 다음 방법으로 전달할 때 속성이 'false'로 재설정되고 따라서 드롭 다운 컨트롤에 적절한 항목이 선택되지 않습니다.SelectExtensions.DropDownList SelectListItem의 Selected 속성을 다시 설정합니다.

public static MvcHtmlString DropDownList (이 HtmlHelper htmlHelper, 문자열 이름, IEnumerable selectList);

SelectList 클래스를 사용하고 SelectedValue 속성을 지정했지만 여전히 올바른 < 옵션> 태그가 선택되지 않았습니다.

내가 선택한 값을 유지하는 방법에 대한 아이디어가 있으십니까?

은 해킹을 썼는지하지만

아래 MVC에서 방출되는 HTML을 사용하기 전에 선택한 옵션을 변경하는 코드 해킹이 솔루션을 선호 할 것입니다. 나는이 해결책이 마음에 들지 않지만 어떻게 해야할지 모르겠다. 그것은 html.ViewData에 보이는 아래로 당신의 하락의 이름과 일치하는 키 (이 경우 propertyName)를 발견하고 대신이 값을 사용하려고하기 때문에

// the following is a hack due to a precived MVC 3 bug 
var html = SelectExtensions.DropDownList(helper, propertyName, source).ToHtmlString(); 
html = html.Replace("selected=\"selected\"", string.Empty); 
html = html.Replace(string.Format("value=\"{0}\"", source.SelectedValue), string.Format("value=\"{0}\" selected=\"selected\"", source.SelectedValue)); 
+0

방법이 헬퍼를 사용하고 있습니까? 모델 구조, 컨트롤러 및 문제에 대한 더 많은 가시성을 제공하는 조치로 구성된 전체 예제를 보여주십시오. 현재 귀하의 질문은 내게 전혀 의미가 없습니다. –

답변

1

프레임 워크는 사용자가 선택한 값을 무시한다.

하나의 해결 방법은 DropDownList를 만들기 전에 html.ViewData을 변경하는 것입니다. 귀하의 경우,이 같은 :

html.ViewData[propertyName] = source.SelectedValue; 

더 일반적인 예 :

html.ViewData['name of your DDL'] = 'The real value you want selected'; 
관련 문제