2012-01-27 7 views
8

dati:rasoio Html.DropdownList fornire "Selezionare" come optionLabel e "noi" come SelectedValue

var countries = new Dictionary<string,string>(); 
countries.Add("AF","Afghanistan"); 
countries.Add("US","United States"); 
countries.Add("FR","France"); 

Razor:

@Html.DropdownList("Countries",new SelectList(countries, "key", "value", "US"), "Select Country") 

Problema: nel mio rasoio, Sto specificando "US" per il valore selezionato e "Select Country" per optionLabel. Mi aspetto che inserisca "Select Country" come primo elemento nel menu a discesa e che sia già selezionato per me "US".

Cosa succede effettivamente: "Select Country" è inserito, ma "US" NON è selezionato. "Select Country" è.

Domanda: posso avere entrambi? Dove il rasoio inietta "Please Select", ma anche pre-seleziona "US" come predefinito?

: sto ricevendo i dati da una tabella nel mio database, quindi preferirei non avere una riga effettiva lì con "Seleziona", o devo inserirla nel dizionario . È più semplice fare Model.Countries = dbRepo.GetCountries() nel mio controller, dichiarando un dizionario vuoto, aggiungendo "Please Select", quindi eseguendo il loop through .GetCountries() e aggiungendo al dizionario originale prima di impostarlo su Model.Countries per la mia opinione.

Grazie!

risposta

17

Questo dovrebbe funzionare. Non ho idea del perché non è perché non hai mostrato il tuo codice reale. Probabilmente non c'è alcuna opzione con key = "US" nel tuo dataset effettivo.

Ma in ogni caso lasciatemi illustrare con un esempio l'approccio che suggerirei che è quello di utilizzare un modello di visualizzazione e un helper fortemente tipizzato con l'helper DropDownListFor.

Modello:

public class CountriesViewModel 
{ 
    public string SelectedCountryCode { get; set; } 
    public IEnumerable<SelectListItem> Countries { get; set; } 
} 

Controller:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new CountriesViewModel(); 
     // TODO: obviously those will come from your database 
     model.Countries = new[] 
     { 
      new SelectListItem { Value = "AF", Text = "Afghanistan" }, 
      new SelectListItem { Value = "US", Text = "United States" }, 
      new SelectListItem { Value = "FR", Text = "France" }, 
     }; 

     // Preselect the option with Value = "US" 
     // Make sure you have such option in the Countries list 
     model.SelectedCountryCode = "US"; 
     return View(model); 
    } 
} 

View (~/Views/Home/Index.cshtml):

@model CountriesViewModel 

@Html.DropDownListFor(
    x => x.SelectedCountryCode, 
    Model.Countries, 
    "Select Country" 
) 

Risultato:

enter image description here

+0

sto ottenendo l'errore quando inserisco questi valori: L'elemento Viewdata che ha la chiave 'SelectedCountryCode' è di tipo 'System.String' ma deve essere di tipo 'IEnumerable '. – Tito

+3

Probabilmente hai dimenticato di ripopolare la proprietà Paesi del modello di vista nella tua azione POST quando hai reso la stessa vista. –

+0

Grazie @Darin, avevi ragione! :) – Tito

10

per persone in cerca di un elenco di paesi, questo vi aiuterà

var countries = new[] 
       { 
        new SelectListItem { Value = "AF", Text = "AFGHANISTAN"}, 
        new SelectListItem { Value = "AX", Text = "ÅLAND ISLANDS"}, 
        new SelectListItem { Value = "AL", Text = "ALBANIA"}, 
        new SelectListItem { Value = "DZ", Text = "ALGERIA"}, 
        new SelectListItem { Value = "AS", Text = "AMERICAN SAMOA"}, 
        new SelectListItem { Value = "AD", Text = "ANDORRA"}, 
        new SelectListItem { Value = "AO", Text = "ANGOLA"}, 
        new SelectListItem { Value = "AI", Text = "ANGUILLA"}, 
        new SelectListItem { Value = "AQ", Text = "ANTARCTICA"}, 
        new SelectListItem { Value = "AG", Text = "ANTIGUA AND BARBUDA"}, 
        new SelectListItem { Value = "AR", Text = "ARGENTINA"}, 
        new SelectListItem { Value = "AM", Text = "ARMENIA"}, 
        new SelectListItem { Value = "AW", Text = "ARUBA"}, 
        new SelectListItem { Value = "AU", Text = "AUSTRALIA"}, 
        new SelectListItem { Value = "AT", Text = "AUSTRIA"}, 
        new SelectListItem { Value = "AZ", Text = "AZERBAIJAN"}, 
        new SelectListItem { Value = "BS", Text = "BAHAMAS"}, 
        new SelectListItem { Value = "BH", Text = "BAHRAIN"}, 
        new SelectListItem { Value = "BD", Text = "BANGLADESH"}, 
        new SelectListItem { Value = "BB", Text = "BARBADOS"}, 
        new SelectListItem { Value = "BY", Text = "BELARUS"}, 
        new SelectListItem { Value = "BE", Text = "BELGIUM"}, 
        new SelectListItem { Value = "BZ", Text = "BELIZE"}, 
        new SelectListItem { Value = "BJ", Text = "BENIN"}, 
        new SelectListItem { Value = "BM", Text = "BERMUDA"}, 
        new SelectListItem { Value = "BT", Text = "BHUTAN"}, 
        new SelectListItem { Value = "BO", Text = "BOLIVIA, PLURINATIONAL STATE OF"}, 
        new SelectListItem { Value = "BQ", Text = "BONAIRE, SINT EUSTATIUS AND SABA"}, 
        new SelectListItem { Value = "BA", Text = "BOSNIA AND HERZEGOVINA"}, 
        new SelectListItem { Value = "BW", Text = "BOTSWANA"}, 
        new SelectListItem { Value = "BV", Text = "BOUVET ISLAND"}, 
        new SelectListItem { Value = "BR", Text = "BRAZIL"}, 
        new SelectListItem { Value = "IO", Text = "BRITISH INDIAN OCEAN TERRITORY"}, 
        new SelectListItem { Value = "BN", Text = "BRUNEI DARUSSALAM"}, 
        new SelectListItem { Value = "BG", Text = "BULGARIA"}, 
        new SelectListItem { Value = "BF", Text = "BURKINA FASO"}, 
        new SelectListItem { Value = "BI", Text = "BURUNDI"}, 
        new SelectListItem { Value = "KH", Text = "CAMBODIA"}, 
        new SelectListItem { Value = "CM", Text = "CAMEROON"}, 
        new SelectListItem { Value = "CA", Text = "CANADA"}, 
        new SelectListItem { Value = "CV", Text = "CAPE VERDE"}, 
        new SelectListItem { Value = "KY", Text = "CAYMAN ISLANDS"}, 
        new SelectListItem { Value = "CF", Text = "CENTRAL AFRICAN REPUBLIC"}, 
        new SelectListItem { Value = "TD", Text = "CHAD"}, 
        new SelectListItem { Value = "CL", Text = "CHILE"}, 
        new SelectListItem { Value = "CN", Text = "CHINA"}, 
        new SelectListItem { Value = "CX", Text = "CHRISTMAS ISLAND"}, 
        new SelectListItem { Value = "CC", Text = "COCOS (KEELING) ISLANDS"}, 
        new SelectListItem { Value = "CO", Text = "COLOMBIA"}, 
        new SelectListItem { Value = "KM", Text = "COMOROS"}, 
        new SelectListItem { Value = "CG", Text = "CONGO"}, 
        new SelectListItem { Value = "CD", Text = "CONGO, THE DEMOCRATIC REPUBLIC OF THE"}, 
        new SelectListItem { Value = "CK", Text = "COOK ISLANDS"}, 
        new SelectListItem { Value = "CR", Text = "COSTA RICA"}, 
        new SelectListItem { Value = "CI", Text = "CÔTE D'IVOIRE"}, 
        new SelectListItem { Value = "HR", Text = "CROATIA"}, 
        new SelectListItem { Value = "CU", Text = "CUBA"}, 
        new SelectListItem { Value = "CW", Text = "CURAÇAO"}, 
        new SelectListItem { Value = "CY", Text = "CYPRUS"}, 
        new SelectListItem { Value = "CZ", Text = "CZECH REPUBLIC"}, 
        new SelectListItem { Value = "DK", Text = "DENMARK"}, 
        new SelectListItem { Value = "DJ", Text = "DJIBOUTI"}, 
        new SelectListItem { Value = "DM", Text = "DOMINICA"}, 
        new SelectListItem { Value = "DO", Text = "DOMINICAN REPUBLIC"}, 
        new SelectListItem { Value = "EC", Text = "ECUADOR"}, 
        new SelectListItem { Value = "EG", Text = "EGYPT"}, 
        new SelectListItem { Value = "SV", Text = "EL SALVADOR"}, 
        new SelectListItem { Value = "GQ", Text = "EQUATORIAL GUINEA"}, 
        new SelectListItem { Value = "ER", Text = "ERITREA"}, 
        new SelectListItem { Value = "EE", Text = "ESTONIA"}, 
        new SelectListItem { Value = "ET", Text = "ETHIOPIA"}, 
        new SelectListItem { Value = "FK", Text = "FALKLAND ISLANDS (MALVINAS)"}, 
        new SelectListItem { Value = "FO", Text = "FAROE ISLANDS"}, 
        new SelectListItem { Value = "FJ", Text = "FIJI"}, 
        new SelectListItem { Value = "FI", Text = "FINLAND"}, 
        new SelectListItem { Value = "FR", Text = "FRANCE"}, 
        new SelectListItem { Value = "GF", Text = "FRENCH GUIANA"}, 
        new SelectListItem { Value = "PF", Text = "FRENCH POLYNESIA"}, 
        new SelectListItem { Value = "TF", Text = "FRENCH SOUTHERN TERRITORIES"}, 
        new SelectListItem { Value = "GA", Text = "GABON"}, 
        new SelectListItem { Value = "GM", Text = "GAMBIA"}, 
        new SelectListItem { Value = "GE", Text = "GEORGIA"}, 
        new SelectListItem { Value = "DE", Text = "GERMANY"}, 
        new SelectListItem { Value = "GH", Text = "GHANA"}, 
        new SelectListItem { Value = "GI", Text = "GIBRALTAR"}, 
        new SelectListItem { Value = "GR", Text = "GREECE"}, 
        new SelectListItem { Value = "GL", Text = "GREENLAND"}, 
        new SelectListItem { Value = "GD", Text = "GRENADA"}, 
        new SelectListItem { Value = "GP", Text = "GUADELOUPE"}, 
        new SelectListItem { Value = "GU", Text = "GUAM"}, 
        new SelectListItem { Value = "GT", Text = "GUATEMALA"}, 
        new SelectListItem { Value = "GG", Text = "GUERNSEY"}, 
        new SelectListItem { Value = "GN", Text = "GUINEA"}, 
        new SelectListItem { Value = "GW", Text = "GUINEA-BISSAU"}, 
        new SelectListItem { Value = "GY", Text = "GUYANA"}, 
        new SelectListItem { Value = "HT", Text = "HAITI"}, 
        new SelectListItem { Value = "HM", Text = "HEARD ISLAND AND MCDONALD ISLANDS"}, 
        new SelectListItem { Value = "VA", Text = "HOLY SEE (VATICAN CITY STATE)"}, 
        new SelectListItem { Value = "HN", Text = "HONDURAS"}, 
        new SelectListItem { Value = "HK", Text = "HONG KONG"}, 
        new SelectListItem { Value = "HU", Text = "HUNGARY"}, 
        new SelectListItem { Value = "IS", Text = "ICELAND"}, 
        new SelectListItem { Value = "IN", Text = "INDIA"}, 
        new SelectListItem { Value = "ID", Text = "INDONESIA"}, 
        new SelectListItem { Value = "IR", Text = "IRAN, ISLAMIC REPUBLIC OF"}, 
        new SelectListItem { Value = "IQ", Text = "IRAQ"}, 
        new SelectListItem { Value = "IE", Text = "IRELAND"}, 
        new SelectListItem { Value = "IM", Text = "ISLE OF MAN"}, 
        new SelectListItem { Value = "IL", Text = "ISRAEL"}, 
        new SelectListItem { Value = "IT", Text = "ITALY"}, 
        new SelectListItem { Value = "JM", Text = "JAMAICA"}, 
        new SelectListItem { Value = "JP", Text = "JAPAN"}, 
        new SelectListItem { Value = "JE", Text = "JERSEY"}, 
        new SelectListItem { Value = "JO", Text = "JORDAN"}, 
        new SelectListItem { Value = "KZ", Text = "KAZAKHSTAN"}, 
        new SelectListItem { Value = "KE", Text = "KENYA"}, 
        new SelectListItem { Value = "KI", Text = "KIRIBATI"}, 
        new SelectListItem { Value = "KP", Text = "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"}, 
        new SelectListItem { Value = "KR", Text = "KOREA, REPUBLIC OF"}, 
        new SelectListItem { Value = "KW", Text = "KUWAIT"}, 
        new SelectListItem { Value = "KG", Text = "KYRGYZSTAN"}, 
        new SelectListItem { Value = "LA", Text = "LAO PEOPLE'S DEMOCRATIC REPUBLIC"}, 
        new SelectListItem { Value = "LV", Text = "LATVIA"}, 
        new SelectListItem { Value = "LB", Text = "LEBANON"}, 
        new SelectListItem { Value = "LS", Text = "LESOTHO"}, 
        new SelectListItem { Value = "LR", Text = "LIBERIA"}, 
        new SelectListItem { Value = "LY", Text = "LIBYA"}, 
        new SelectListItem { Value = "LI", Text = "LIECHTENSTEIN"}, 
        new SelectListItem { Value = "LT", Text = "LITHUANIA"}, 
        new SelectListItem { Value = "LU", Text = "LUXEMBOURG"}, 
        new SelectListItem { Value = "MO", Text = "MACAO"}, 
        new SelectListItem { Value = "MK", Text = "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"}, 
        new SelectListItem { Value = "MG", Text = "MADAGASCAR"}, 
        new SelectListItem { Value = "MW", Text = "MALAWI"}, 
        new SelectListItem { Value = "MY", Text = "MALAYSIA"}, 
        new SelectListItem { Value = "MV", Text = "MALDIVES"}, 
        new SelectListItem { Value = "ML", Text = "MALI"}, 
        new SelectListItem { Value = "MT", Text = "MALTA"}, 
        new SelectListItem { Value = "MH", Text = "MARSHALL ISLANDS"}, 
        new SelectListItem { Value = "MQ", Text = "MARTINIQUE"}, 
        new SelectListItem { Value = "MR", Text = "MAURITANIA"}, 
        new SelectListItem { Value = "MU", Text = "MAURITIUS"}, 
        new SelectListItem { Value = "YT", Text = "MAYOTTE"}, 
        new SelectListItem { Value = "MX", Text = "MEXICO"}, 
        new SelectListItem { Value = "FM", Text = "MICRONESIA, FEDERATED STATES OF"}, 
        new SelectListItem { Value = "MD", Text = "MOLDOVA, REPUBLIC OF"}, 
        new SelectListItem { Value = "MC", Text = "MONACO"}, 
        new SelectListItem { Value = "MN", Text = "MONGOLIA"}, 
        new SelectListItem { Value = "ME", Text = "MONTENEGRO"}, 
        new SelectListItem { Value = "MS", Text = "MONTSERRAT"}, 
        new SelectListItem { Value = "MA", Text = "MOROCCO"}, 
        new SelectListItem { Value = "MZ", Text = "MOZAMBIQUE"}, 
        new SelectListItem { Value = "MM", Text = "MYANMAR"}, 
        new SelectListItem { Value = "NA", Text = "NAMIBIA"}, 
        new SelectListItem { Value = "NR", Text = "NAURU"}, 
        new SelectListItem { Value = "NP", Text = "NEPAL"}, 
        new SelectListItem { Value = "NL", Text = "NETHERLANDS"}, 
        new SelectListItem { Value = "NC", Text = "NEW CALEDONIA"}, 
        new SelectListItem { Value = "NZ", Text = "NEW ZEALAND"}, 
        new SelectListItem { Value = "NI", Text = "NICARAGUA"}, 
        new SelectListItem { Value = "NE", Text = "NIGER"}, 
        new SelectListItem { Value = "NG", Text = "NIGERIA"}, 
        new SelectListItem { Value = "NU", Text = "NIUE"}, 
        new SelectListItem { Value = "NF", Text = "NORFOLK ISLAND"}, 
        new SelectListItem { Value = "MP", Text = "NORTHERN MARIANA ISLANDS"}, 
        new SelectListItem { Value = "NO", Text = "NORWAY"}, 
        new SelectListItem { Value = "OM", Text = "OMAN"}, 
        new SelectListItem { Value = "PK", Text = "PAKISTAN"}, 
        new SelectListItem { Value = "PW", Text = "PALAU"}, 
        new SelectListItem { Value = "PS", Text = "PALESTINIAN TERRITORY, OCCUPIED"}, 
        new SelectListItem { Value = "PA", Text = "PANAMA"}, 
        new SelectListItem { Value = "PG", Text = "PAPUA NEW GUINEA"}, 
        new SelectListItem { Value = "PY", Text = "PARAGUAY"}, 
        new SelectListItem { Value = "PE", Text = "PERU"}, 
        new SelectListItem { Value = "PH", Text = "PHILIPPINES"}, 
        new SelectListItem { Value = "PN", Text = "PITCAIRN"}, 
        new SelectListItem { Value = "PL", Text = "POLAND"}, 
        new SelectListItem { Value = "PT", Text = "PORTUGAL"}, 
        new SelectListItem { Value = "PR", Text = "PUERTO RICO"}, 
        new SelectListItem { Value = "QA", Text = "QATAR"}, 
        new SelectListItem { Value = "RE", Text = "RÉUNION"}, 
        new SelectListItem { Value = "RO", Text = "ROMANIA"}, 
        new SelectListItem { Value = "RU", Text = "RUSSIAN FEDERATION"}, 
        new SelectListItem { Value = "RW", Text = "RWANDA"}, 
        new SelectListItem { Value = "BL", Text = "SAINT BARTHÉLEMY"}, 
        new SelectListItem { Value = "SH", Text = "SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA"}, 
        new SelectListItem { Value = "KN", Text = "SAINT KITTS AND NEVIS"}, 
        new SelectListItem { Value = "LC", Text = "SAINT LUCIA"}, 
        new SelectListItem { Value = "MF", Text = "SAINT MARTIN (FRENCH PART)"}, 
        new SelectListItem { Value = "PM", Text = "SAINT PIERRE AND MIQUELON"}, 
        new SelectListItem { Value = "VC", Text = "SAINT VINCENT AND THE GRENADINES"}, 
        new SelectListItem { Value = "WS", Text = "SAMOA"}, 
        new SelectListItem { Value = "SM", Text = "SAN MARINO"}, 
        new SelectListItem { Value = "ST", Text = "SAO TOME AND PRINCIPE"}, 
        new SelectListItem { Value = "SA", Text = "SAUDI ARABIA"}, 
        new SelectListItem { Value = "SN", Text = "SENEGAL"}, 
        new SelectListItem { Value = "RS", Text = "SERBIA"}, 
        new SelectListItem { Value = "SC", Text = "SEYCHELLES"}, 
        new SelectListItem { Value = "SL", Text = "SIERRA LEONE"}, 
        new SelectListItem { Value = "SG", Text = "SINGAPORE"}, 
        new SelectListItem { Value = "SX", Text = "SINT MAARTEN (DUTCH PART)"}, 
        new SelectListItem { Value = "SK", Text = "SLOVAKIA"}, 
        new SelectListItem { Value = "SI", Text = "SLOVENIA"}, 
        new SelectListItem { Value = "SB", Text = "SOLOMON ISLANDS"}, 
        new SelectListItem { Value = "SO", Text = "SOMALIA"}, 
        new SelectListItem { Value = "ZA", Text = "SOUTH AFRICA"}, 
        new SelectListItem { Value = "GS", Text = "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"}, 
        new SelectListItem { Value = "SS", Text = "SOUTH SUDAN"}, 
        new SelectListItem { Value = "ES", Text = "SPAIN"}, 
        new SelectListItem { Value = "LK", Text = "SRI LANKA"}, 
        new SelectListItem { Value = "SD", Text = "SUDAN"}, 
        new SelectListItem { Value = "SR", Text = "SURINAME"}, 
        new SelectListItem { Value = "SJ", Text = "SVALBARD AND JAN MAYEN"}, 
        new SelectListItem { Value = "SZ", Text = "SWAZILAND"}, 
        new SelectListItem { Value = "SE", Text = "SWEDEN"}, 
        new SelectListItem { Value = "CH", Text = "SWITZERLAND"}, 
        new SelectListItem { Value = "SY", Text = "SYRIAN ARAB REPUBLIC"}, 
        new SelectListItem { Value = "TW", Text = "TAIWAN, PROVINCE OF CHINA"}, 
        new SelectListItem { Value = "TJ", Text = "TAJIKISTAN"}, 
        new SelectListItem { Value = "TZ", Text = "TANZANIA, UNITED REPUBLIC OF"}, 
        new SelectListItem { Value = "TH", Text = "THAILAND"}, 
        new SelectListItem { Value = "TL", Text = "TIMOR-LESTE"}, 
        new SelectListItem { Value = "TG", Text = "TOGO"}, 
        new SelectListItem { Value = "TK", Text = "TOKELAU"}, 
        new SelectListItem { Value = "TO", Text = "TONGA"}, 
        new SelectListItem { Value = "TT", Text = "TRINIDAD AND TOBAGO"}, 
        new SelectListItem { Value = "TN", Text = "TUNISIA"}, 
        new SelectListItem { Value = "TR", Text = "TURKEY"}, 
        new SelectListItem { Value = "TM", Text = "TURKMENISTAN"}, 
        new SelectListItem { Value = "TC", Text = "TURKS AND CAICOS ISLANDS"}, 
        new SelectListItem { Value = "TV", Text = "TUVALU"}, 
        new SelectListItem { Value = "UG", Text = "UGANDA"}, 
        new SelectListItem { Value = "UA", Text = "UKRAINE"}, 
        new SelectListItem { Value = "AE", Text = "UNITED ARAB EMIRATES"}, 
        new SelectListItem { Value = "GB", Text = "UNITED KINGDOM"}, 
        new SelectListItem { Value = "US", Text = "UNITED STATES"}, 
        new SelectListItem { Value = "UM", Text = "UNITED STATES MINOR OUTLYING ISLANDS"}, 
        new SelectListItem { Value = "UY", Text = "URUGUAY"}, 
        new SelectListItem { Value = "UZ", Text = "UZBEKISTAN"}, 
        new SelectListItem { Value = "VU", Text = "VANUATU"}, 
        new SelectListItem { Value = "VE", Text = "VENEZUELA, BOLIVARIAN REPUBLIC OF"}, 
        new SelectListItem { Value = "VN", Text = "VIET NAM"}, 
        new SelectListItem { Value = "VG", Text = "VIRGIN ISLANDS, BRITISH"}, 
        new SelectListItem { Value = "VI", Text = "VIRGIN ISLANDS, U.S."}, 
        new SelectListItem { Value = "WF", Text = "WALLIS AND FUTUNA"}, 
        new SelectListItem { Value = "EH", Text = "WESTERN SAHARA"}, 
        new SelectListItem { Value = "YE", Text = "YEMEN"}, 
        new SelectListItem { Value = "ZM", Text = "ZAMBIA"}, 
        new SelectListItem { Value = "ZW", Text = "ZIMBABWE"}, 

       }; 
Problemi correlati