[asp.net-mvc] ASP.net MVC에서 SelectList에 항목을 추가하는 방법

기본적으로 SelectList의 시작 부분에 기본값이 0이고 텍스트 값이 “-Select One–“인 항목을 삽입하려고합니다.

같은 것

SelectList list = new SelectList(repository.func.ToList());
ListItem li = new ListItem(value, value);
list.items.add(li);

할 수 있습니까?



답변

0 값을 고집하지 않는 한 실제로이 작업을 수행 할 필요가 없습니다. HtmlHelper DropDownList 확장을 사용하면 null 값을 사용하여 선택에서 초기 값으로 표시되는 옵션 레이블을 설정할 수 있습니다. 옵션 레이블이있는 DropDownList 서명 중 하나를 사용하기 만하면됩니다.

<%= Html.DropDownList( "DropDownValue",
                       (IEnumerable<SelectListItem>)ViewData["Menu"],
                        "-- Select One --" ) %>


답변

SelectListItem을 채우고, List로 변환하고, 인덱스 0에 값을 추가하여이 작업을 수행했습니다.

List<SelectListItem> items = new SelectList(CurrentViewSetups, "SetupId", "SetupName", setupid).ToList();
items.Insert(0, (new SelectListItem { Text = "[None]", Value = "0" }));
ViewData["SetupsSelectList"] = items;


답변

이것은 가능하다.

//Create the select list item you want to add
SelectListItem selListItem = new SelectListItem() { Value = "null", Text = "Select One" };

//Create a list of select list items - this will be returned as your select list
List<SelectListItem> newList = new List<SelectListItem>();

//Add select list item to list of selectlistitems
newList.Add(selListItem);

//Return the list of selectlistitems as a selectlist
return new SelectList(newList, "Value", "Text", null);


답변

나는 @AshOoO의 대답을 좋아했지만 @Rajan Rawal과 마찬가지로 선택한 항목 상태를 보존해야했습니다. 그래서 그의 방법에 내 사용자 정의를 추가했습니다.AddFirstItem()

public static SelectList AddFirstItem(SelectList origList, SelectListItem firstItem)
{
    List<SelectListItem> newList = origList.ToList();
    newList.Insert(0, firstItem);

    var selectedItem = newList.FirstOrDefault(item => item.Selected);
    var selectedItemValue = String.Empty;
    if (selectedItem != null)
    {
        selectedItemValue = selectedItem.Value;
    }

    return new SelectList(newList, "Value", "Text", selectedItemValue);
}


답변

private SelectList AddFirstItem(SelectList list)
        {
            List<SelectListItem> _list = list.ToList();
            _list.Insert(0, new SelectListItem() { Value = "-1", Text = "This Is First Item" });
            return new SelectList((IEnumerable<SelectListItem>)_list, "Value", "Text");
        }

필요한 작업을 수행해야합니다. 선택 목록을 보내면 인덱스 0에있는 항목이있는 선택 목록이 반환됩니다.

삽입해야하는 항목의 텍스트, 값 또는 색인을 사용자 정의 할 수 있습니다.


답변

여기 당신을위한 html 도우미

public static SelectList IndividualNamesOrAll(this SelectList Object)
{
    MedicalVarianceViewsDataContext LinqCtx = new MedicalVarianceViewsDataContext();

    //not correct need individual view!
    var IndividualsListBoxRaw =  ( from x in LinqCtx.ViewIndividualsNames
                                 orderby x.FullName
                                 select x);

    List<SelectListItem> items = new SelectList (
                               IndividualsListBoxRaw,
                              "First_Hospital_Case_Nbr",
                              "FullName"
                               ).ToList();

    items.Insert(0, (new SelectListItem { Text = "All Individuals",
                                        Value = "0.0",
                                        Selected = true }));

    Object = new SelectList (items,"Value","Text");

    return Object;
}


답변

.ToList (). 삽입 (..)는 귀하의 목록에 방법을 둔다 요소를. 모든 위치를 지정할 수 있습니다. ToList 다음에 .Insert (0, “–First Item–“)를 추가하십시오.

귀하의 코드

SelectList list = new SelectList(repository.func.ToList());
ListItem li = new ListItem(value, value);
list.items.add(li);

새 코드

SelectList list = new SelectList(repository.func.ToList().Insert(0, "- - First Item - -"));
ListItem li = new ListItem(value, value);
list.items.add(li);