我有很多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");
在这种情况下设置默认值
答案 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}}重载,其中对象是所选值。
希望这有帮助。