我有一个名为
的班级public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Country Country { get; set; }
}
public class Country
{
public int Id { get; set; }
public string Type { get; set; }
}
我的MVC查看页面是强类型的人,并且有一个显示国家列表的下拉列表。
在我的控制器索引
中public ActionResult Index()
{
LoadCountryList();
return View(Person);
}
private void LoadCountryList()
{
IEnumerable<CountryList> countryList = CountryListService.GetCountryList();
ViewData["CountryList"] = new SelectList(country, "Id", "Type", 0);
}
html中的代码
<%: Html.DropDownListFor(model => model.Country.Id, (IEnumerable<SelectListItem>)ViewData["CountryList"], "--Select--")%>
提交页面时在控制器中调用Create方法
public ActionResult Create(Person person)
{
// person.Country.Id has the value
// person.Country.Type is null
}
我在“创建方法”中仅从对象人处获取国家/地区ID。国家标识加载在国家/地区的人员对象内。
从页面传递到控制器时,有什么方法可以同时获得国家/地区的ID和类型?
我知道我从这里传递了Html.DropDownListFor(model =&gt; model.Country.Id ....
是否有任何解决方案,以便我在控制器中获得Id和Type。
由于
答案 0 :(得分:0)
将其传递给person对象并不是最好的方法。而是将ID分配给下拉列表,如下所示:
<%: Html.DropDownListFor(
model => model.Country.Id,
(IEnumerable<SelectListItem>)ViewData["CountryList"], "--Select--")
new { id = "CountryID" }
%>
然后将其作为参数添加到Create方法中:
public ActionResult Create(Person person, int CountryID)
{
var country = CountryListService.GetCountryList().Where(x => x.id == CountryID);
person.Country = country;
...
}
ASP .NET MVC将查找与方法调用中的参数具有相同ID名称的控件并将其传递。