mvc DropDownList에 대한 문제가 있습니다. 많은 문제가 있지만 동일한 문제가 있습니다.asp.net mvc 5 DropDownList nullable int 기본 옵션이 null이 아닙니다.
내 DropDownList의 기본 선택 옵션을 원하지만 "모든"항목 선택을위한 추가 옵션이 필요합니다.
2의그래서 내 컨트롤러가 결합되어 디폴트 값은 내가 모든 목록이
ViewData["All"] = new SelectList(CommonLists.property_types.Select(x => new { v = x.Value, t = x.Key.ToLower() }), "v", "t", All);
property_types처럼 가득
@Html.DropDownList("All","All items")
이 cshtml에서
public ActionResult Index(int? All = 2){ ...
을 드롭 다운합니다
public static Dictionary<string, int> property_types = new Dictionary<string, int>() {
{ "House", 1 }, { "Flat", 2 }, { "Garden", 3 }
그래서 먼저 기본 선택 값이 2 입력이
- 처럼 작동한다는
- 사용자가 변경할 수 있습니다 "플랫"만 "플랫"항목이 표시됩니다 (작품)을 동일 목록에서 다른 옵션 (이 작동하지 않습니다) (작품)
- 사용자는 한 번에 상관없이에 "모든 항목"을 선택 범주를 모든 항목을 볼 변경할 수 있습니다
나는 그것이 작동해야 가정 만에 한 놀랍게도 "모든 항목 s "mvc가 반환하지 않습니다 null 그냥 기본 정수 값 을 반환하므로 기본적으로 모든 항목을 쿼리 할 수 없습니다.
이렇게하면됩니까? 자동 생성 된 "모든 항목"은 비어있는 값이므로 mvc가 null로 변환한다고 가정합니다. 그러나 그렇지 않습니다.
해결 방법?
에보기 변경은, MVC은 기본 옵션을 추가하기위한 옵션을 제공하는 경우는 경우는 null을 반환해야, 이에 대한 자세한 지능해야한다 내 값이 2가 아닌 빈 값을 가지며, 특히 null 허용 int 인 경우. 어쩌면 사용자 정의 매개 변수 바인더를 사용하여 수정하는 것이 좋습니다. – Programista
이것은 MVC에는 문제가되지 않습니다. null 값에 두 가지의 L를 부여합니다. 'null'은 POSTback에서 "All Items"를 의미하는 반면, 초기 null은 "default 값을 가짐"을 의미합니다. 액션에'= 2 '을 제거하면. 그러면 이전 코드가 작동하지만 기본값은 "Flat"이 아닌 "All items"입니다. –
예, MVC 문제입니다. 양식을 의미하지 않는 경우 "모든"필드는 2로 보내야합니다. 그러나 "모든 항목"을 선택하면 양식의 POST 필드 "모두"가 비어 있습니다. 컨트롤러는 그렇다면 null 값을 얻는다. 이중 의미의 문제는 아니므로, mvc는 요청시 POST 필드와 POST 필드를 인식 할 수 없지만 값이 비어 있으면 두 가지 다른 문제가 발생합니다. 진실은 가장 직관적 인 방식으로 작동해야한다는 것입니다. 제 질문에 표시된 것처럼 간단하고 해결 방법도 필요하지 않지만 간단합니다. – Programista