我使用ADO.NET Entity框架将我的数据库映射到我的应用程序中的Model。我已经设置了我的ViewModel进行注册,如下所示:
max
这里的具体部分是我想用我的DBContext中的国家/地区填写我的下拉列表,如下所示:
public class UserRegistrationViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public string PasswordConfirm { get; set; }
public SelectList Countries { get; set; }
}
正如您所看到的那些国家/地区现在是一个列表,在我看来,我想使用Html帮助程序类设置一个下拉列表:
Connection.ctx.Countries.OrderBy(x => x.CountryName).ToList();
这就是我在视图中映射模型的方式:
@Html.DropDownListFor(model => model.Countries);
如何正确设置下拉列表(即选择列表)以便我可以显示数据库中的数据?
答案 0 :(得分:2)
您需要两个属性:一个用于保存所选值,另一个用于保存选择列表选项:
public string Country { get; set; }
public IEnumerable<SelectListItem> CountryOptions { get; set; }
然后,在您看来:
@Html.DropDownListFor(m => m.Country, Model.CountryOptions)
您不需要实际的SelectList
。事实上,如果你不这样做,那就更好了。 Razor将自动创建SelectList
并选择适当的值。
答案 1 :(得分:1)
在viewModel中添加一个属性以保存所选国家/地区的ID:
public class UserRegistrationViewModel
{
//
public int SelectedCountryId { get; set; }
public SelectList Countries { get; set; }
}
我要猜测设置Country属性的时间是这样的:
var countries=Connection.ctx.Countries.OrderBy(x => x.CountryName).ToList();
//...
viemodel.Countries=new SelectList(countries, "CountryId", "CountryName");
然后在您的视图中,您可以执行以下操作:
@Html.DropDownListFor(model => model.SelectedCountryId, Model.Countries)