如何在MVC 4 razor DropDownListFor中设置默认值

时间:2014-04-25 08:27:08

标签: asp.net-mvc-4 razor

我有很多DropDrownFor的MVC Razor视图。 我想将默认值设置为DropdownListFor。

这是我的观点:

@Html.DropDownListFor(model => model.DestCountryId, ViewBag.CountryIdList as SelectList, "select", new { @class = "form-control input-sm" })

这是我的ViewBag:

 ViewBag.CountryIdList = new SelectList(db.Countries.Where(a => a.Currency != null), "Id", "Name");

在这种情况下设置默认值

2 个答案:

答案 0 :(得分:1)

你需要这样做:

ViewBag.CountryIdList = new SelectList(db.Countries.Where(a => a.Currency != null), "Id", "Name",1);

对于国家/地区列表中的示例,您有一个项目CountryName,其ID为1,您需要在最后一个参数中传递1,默认情况下将显示具有该Id 1的元素。

示例:

public class Country
{
    public int Id { get; set; }
    public string Name { get; set; }
}

List<Country> list = new List<Country>();

list.Add(new Country{ Id = 1, Name="Test"});
list.Add(new Country{ Id = 2, Name="Test2"});

现在处于控制器操作中:

int Selected = 2;
ViewBag.CountryIdList = new SelectList(list, "Id", "Name",Selected);

现在 Test2 将在View中显示为默认选择。

答案 1 :(得分:0)

您为@Html.DropDownListFor提供的第一个参数是一个表达式,用于标识包含要显示的属性的对象。

你已经给了&#34;选择&#34;默认值,如果未选择任何内容或您的DestCountryId没有保留任何值,或者它与CountryIdList.中传递的值不匹配您需要为{DestCountryId分配值1}}在渲染此视图之前。您可以在控制器中或在构建视图模型的位置执行此操作,如:

viewModel.DestCountryId = 33;此值存在于您为dropdownlist提供的selectList值中。

另外,一个好的做法是不使用ViewBag。尝试使用当前视图所需的属性创建一个简单模型。

您还可以使用SelectList的{​​{3}}重载,其中对象是所选值。

希望这有帮助。