2012-01-22 48 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"预选元素(在我的例子中是第三个)。

相关问题