이 질문은 ASP.NET MVC 2 RC (12 월 하락)와 관련이 있습니다. 기본 문제는 기본 선택된 값으로 드롭 다운 목록을 만들 때 "selected"속성이 HTML로 렌더링되지 않거나 잘못된 옵션에 기인한다는 것입니다. 여기 SelectListItem이 명시 적으로 true로 설정된 경우에도 선택되지 않았습니다.
public static Dictionary<int, string> MonthOfBirth
{
get
{
Dictionary<int, string> months = new Dictionary<int, string>();
for (int i = 0; i <= 11; i++)
{
months.Add(i, CultureInfo.CurrentUICulture.DateTimeFormat.MonthNames[i]);
}
return months;
}
}
이 SelectListItems의 목록을 작성하기 위해 확장 도우미입니다 : 여기
일부 값을 생성하는 기능 [AttributeService 클래스]입니다 :
여기
잘못된 옵션 문제를 설명하는 몇 가지 코드입니다
public static List<SelectListItem> ToSelectList<T>(
this IEnumerable<T> enumerable,
Func<T, string> text,
Func<T, int> value,
string defaultOption
)
{
var items = enumerable.Select(x => new SelectListItem
{
Text = text(x),
Value = value(x).ToString(),
Selected = false
}).ToList();
items.Insert(0, new SelectListItem
{
Text = defaultOption,
Value = "-1",
Selected = true
});
return items;
}
이 조각은 위의 두 함께 묶어 :
public List<SelectListItem> MonthOfBirthList
{
get
{
return AttributeService.MonthOfBirth.OrderBy(x => x.Key).ToSelectList(x => x.Value, x => x.Key,
"Month");
}
}
첫 번째 스 니펫은 다양한 클래스에 있고 세 번째 스킨은 내 ViewModel에 있으며 컨트롤러는 뷰에 그냥 쏟아 붓습니다. 그래서 내보기에 그때가 내 확장 방법은 기본 값으로, 위치 인덱스 0에 기본 SelectListItem를 추가하고 = true로 선정
<%=Html.DropDownListFor(x=>x.MonthOfBirth, Model.MonthOfBirthList, new { @class = "panel_4_month" })%>
참고. 모델에 포함 된 것을보기 위해 컨트롤러에 중단 점을 배치하면 목록이 올바르게 정렬되고 올바른 옵션이 선택으로 설정됩니다. 다음
<select class="panel_4_month" id="MonthOfBirth" name="MonthOfBirth">
<option value="-1">Month</option>
<option selected="selected" value="0">January</option>
<option value="1">February</option>
<option value="2">March</option>
etc...
</select>
차 질문 내 코드가 잘못 여부 또는 HTML 렌더러에 버그가 있는지 여부 : 나는 실제로 생각 얻을
HTML이 무엇입니까? 이것이 충분한 정보가 아닌 경우 어딘가에 샘플 코드가있는 VS28K 솔루션을 업로드하게되어 기쁩니다. 감사.
HTML이 정상적으로 보입니다. 별로 도움이 안된다. 알아, 미안해. – graphicdivine