2012-01-22 46 views
1

我填充下拉使用此代碼列表(它工作正常):如何從DropDownListFor列表中選擇一個項目? (MVC3)

@Html.DropDownListFor(x => x.SelectedCountry, new SelectList(Model.Countries, "Value", "Text"), "Please Select a Country") 

有時候,這種觀點也得到預先選定國家的數據,所以我想選擇國家。

我想:

@Html.DropDownListFor(x => x.SelectedCountry, new SelectList(Model.Countries, "Value", "Text", "United States"), "Please Select a Country") 

但這並沒有工作。我也嘗試過這個項目的價值,沒有運氣。

我在做什麼錯?

另外,有沒有辦法在創建後訪問/修改該元素? (使用C#不是JavaScript)

謝謝!

+1

你檢查了這個嗎? http://stackoverflow.com/questions/781987/how-can-i-get-this-asp-net-mvc-selectlist-to-work –

+0

我找不到明確的答案,你可以指導我也許一個特定的地方?如果可能,我寧願避免使用這些功能。 – Michael

+0

當模型包含所選項目的值時,我才能使用它。 即: x.SelectedCountry 有數據(值,而不是文本),它的工作原理。 (使用與之前相同的代碼) – Michael

回答

3

Model.Countries列表中有2處物業:TextValue。所以,如果你想在下拉菜單中預選給定的項目,你應該使用值:

@Html.DropDownListFor(
    x => x.SelectedCountry, 
    new SelectList(Model.Countries, "Value", "Text", "us"), 
    "Please Select a Country" 
) 

它假設在Model.Countries您擁有的項目與Value="us"

當你能做到這一點,正在恢復視圖控制器動作內部的替代:

public ActionResult Foo() 
{ 
    var model = new MyViewModel(); 
    model.Countries = new[] 
    { 
     new SelectListItem { Value = "fr", Text = "France" }, 
     new SelectListItem { Value = "uk", Text = "United Kingdom" }, 
     new SelectListItem { Value = "us", Text = "United States" }, 
    }; 
    model.SelectedCountry = "us"; 
    return View(model); 
} 

,並在視圖中你可以簡單地說:

@Html.DropDownListFor(
    x => x.SelectedCountry, 
    Model.Countries, 
    "Please Select a Country" 
) 

將與Value="us"預選元素(在我的例子中是第三個)。

相關問題