我正在使用Entity Framework进行Web应用程序并遇到一些我不确定如何解决的问题。它位于具有自动生成表单内容的Create.cshtml
文件中。从一开始我在下拉列表中有一个国家的枚举,然后我不得不改为一个类,因为我还需要能够在列表中添加或删除contries。但是下面的替代方案不起作用,我尝试使用DropDownList
和DropDownListFor
,但没有任何进展!我做错了什么?
@Html.EnumDropDownListFor(model => model.Country, htmlAttributes: new { @class = "form-control" })
这是下拉列表的模型:
public class CountryNames
{
public int Id { get; set; }
public string Name { get; set; }
}
编辑:更新的课程(不确定我是以正确的方式完成的吗??)
public class CountryNames
{
public int Id { get; set; }
public int SelectedCountryId { get; set; }
public IEnumerable<SelectListItem> Countries { get; set; }
//public string Name { get; set; }
}
编辑:在控制器中创建操作方法
// GET: Persons/Create
public ActionResult Create()
{
var countryNames = new CountryNames();
countryNames.Countries = CountriesList.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() });
return View(countryNames);
//return View();
}
答案 0 :(得分:1)
所以在你的控制器中你会有这样的东西:
[HttpGet]
public ActionResult SomeAction()
{
var vm = new SomeViewModel();
vm.Countries = CountriesList.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() });
return View(vm);
}
public class SomeViewModel
{
public IEnumerable<SelectListItem> Countries {get;set;}
public int SelectedCountryId {get;set;}
}
CSHTML:
@model some.namespace.path.SomeViewModel
@Html.DropDownListFor(model => model.SelectedCountryId, Model.Countries, new { @class = "form-control" })
总而言之,您将视图模型作为要在视图上显示的对象的容器(cshtml)。 SelectListItem
的国家/地区列表,因为这是DropDownList
理解的内容。
在控制器中,您Select
对CountriesList
进行了操作,即CountryNames
个对象并将其转换为SelectListItem
个。
最后,ViewModel上有一个名为SelectedCountryId
的属性,当您选择特定国家/地区时,该属性由下拉列表设置。
供参考:
CountriesList
是一个变量,它是某种形式的IEnumerable<CountryNames>
,可以从数据库或包含该列表的静态类中检索它。
答案 1 :(得分:0)
只需使用ViewBag即可:
你的控制器应该是
public ActionResult GetCountries()
{
ViewBag.Countries = EntitiesObject.CountriesTable.Select(x =&gt; x.Countries).ToList();
return View();
}
查看:
@model xyz.Models.exampleModel
@ Html.DropDownListFor(model =&gt; model.Country,new SelectList(ViewBag.Countries),“ - 选择你的国家 - ”,htmlAttributes:new {@class =“form-control”})
在班级/模型中
public class MyModel
{
public int Id { get; set; }
public string Country{ get; set; }
}