2009-05-21 3 views
15
public IEnumerable<SelectListItem> GetList(int? ID) 
{ 
     return from s in db.List 
      orderby s.Descript 
      select new SelectListItem 
      { 
       Text = s.Descript, 
       Value = s.ID.ToString(), 
       Selected = (s.ID == ID) 
      }; 
} 

위의 내용을보기로 되돌리고 DropDownList을 채 웁니다. 보기에 반환되기 전에 위의 linq 결과에 SelectListItem (0, "Please Select..") 기본값을 추가하고 싶습니다. 이것이 가능한가?기본 SelectListItem 추가

답변

29
return new[] { new SelectListItem { Text = ... } }.Concat(
     from s in db.List 
     orderby s.Descript 
     select new SelectListItem 
     { 
      Text = s.Descript, 
      Value = s.ID.ToString(), 
      Selected = (s.ID == ID) 
     }); 
4
var list = from s in db.List 
      orderby s.Descript 
      select new SelectListItem 
      { 
       Text = s.Descript, 
       Value = s.ID.ToString(), 
       Selected = (s.ID == ID) 
      }; 

list.Insert(0, new SelectListItem { Text = "Please Select...", Value = string.Empty }); 
return list; 
21

당신이 ASP.NET MVC를 사용하는 것처럼, 당신은 Html 헬퍼의 DropDownField 방법의 optionLabel 매개 변수의 값을 지정하여 뷰에서이 작업을 수행 할 수 있습니다 - 예 :

htmlHelper.DropDownList("customerId", selectList, "Select One"); 

UI 레이어에이 유형의 코드를 삽입하는 것이 데이터 레이어에서 사용하는 것보다 적합합니다. 이 작업의 한 가지 단점은 선택 상자가 '하나 선택'옵션에 대해 "0"이 아닌 빈 문자열 값을 가지지 만 실제로 컨트롤러 문제가 있으면 null 값으로 처리 할 수 ​​있으므로 문제가되지는 않습니다 메서드는 관련 매개 변수에 대해 nullable int를 허용 할 수 있습니다.

public ActionResult DoSomething(int? customerId) 
{ 
    if(customerId != null) 
    { 
    // do something with the value 
    } 
} 
+0

1; 간단하고 작동 :) – Dan

+0

이것은 내가 찾고 있던 대답이었다. –

0

여기는 내가 한 일로, XML 파일의 값을 IList로 읽습니다. 그런 다음 위치 0에있는 IList에 새 레코드를 삽입했습니다. 그런 다음 IList에서 선택 목록을 만듭니다.

IList의 < MY_DATA> 다음 mydata = (TMP로부터 myXML.Descendants ("R")이다. ToList()

     select new MY_DATA 
         { 
         NR = tmp.Attribute("NR").Value, 
         NA = tmp.Attribute("NA").Value 
         }).ToList<MY_DATA>(); 

mydata.Insert (0, 새로운 My_DATA() {NR = "" , NA는)} "선택해 위해 --Click을"=;

selectList의 myList를 = 새로운 selectList의을 (mydata을, "NR", "NA는");

0

firt 목록에 기본 값을 넣어

,

에는 list.add (기본 목록 항목)

다음 list.addrange을 LINQ (선택 쿼리)

환호

0
나는 많은 질문을 검토 한 후

, 내가 무엇을 찾을 수없는 내가 찾고 싶습니다. 단순한 drowpdown을 사용하기 위해 많은 코드가 필요하지 않습니다. 그래서 당신과 함께 사용하고 간단하고 간단하게 공유하고 싶습니다. (특별히 Entity Framework를 사용하고 싶지 않다면 ..

using System.Web.Mvc;

SelectList slTitle = new SelectList(Query.SelectAllTitle(), "TitleID", "TitleName"); 
ViewBag.TitleSelectList = slTitle; 

추가보기 에서 :

추가 컨트롤러 에서 예를 들어

SelectList(IEnumerable items, string dataValueField, string dataTextField); 

@Html.DropDownList("TitleSelectList", "--please select--") 
0

이 웹 페이지의 framwork를 사용하는 사람들을 위해 단지이다 (안 면도기 V2 및 C#과 MVC 및 웹 양식), 당신은

@Html.DropDownList("category", "Please select", listData) 

주의 할 필요 중간 매개 변수를해야 OptionalLabel.

등가 목록 데이터에 SelectListitem를 추가 할 것 : 그냥보기에 이런 짓을

var list=db.Query("select id, name from dbtable"); 
    List<SelectListItem> listData = new List<SelectListItem>(); 
    listData.Add(new SelectListItem 
    { 
     Text = "Please select", 
     Value = "", 
    }); 

    foreach(var item in list) { 
     listData.Add(new SelectListItem { 
      Text = item.Name, 
      Value = item.id, 
      Selected = isSelected 
     }); 
    } 

    @Html.DropDownList("play" , listData) 
관련 문제