我有这样的下拉列表:
public class RegionLine
{
public Nullable<int> regionId { get; set; }
[Display(Name = "Województwo: ")]
public string regionName { get; set; }
}
和控制器:
public PartialViewResult getPersonalData()
{
var d = rm.GetAllRegionsMapper();
ViewBag.Regions = new SelectList(rm.GetAllRegionsMapper().ToList(), "regionId", "regionName", "-- select item --");
var user = um.GetUserByLoginMapper(User.Identity.Name);
return PartialView("getPersonalData", user);
}
[HttpPost]
public PartialViewResult UpdatePersonalData(UserLine user)
{
var usr = um.GetUserByLoginMapper(User.Identity.Name);
ViewBag.Regions = new SelectList(rm.GetAllRegionsMapper().ToList(), "regionId", "regionName", "-- select item --");
if (ModelState.IsValid)
{
int status = uda.UpdateEmployeesPersonalData(user.UserId, user.PersonalData.Name, user.PersonalData.LastName,
user.Address.City, user.Address.Street, user.Address.Region.regionId, user.Address.PostCode,
user.PersonalData.KeyWord);
return PartialView("getLabelsPersonalData", user);
}
return PartialView("getPersonalData", usr);
}
我的下拉列表中的部分视图:
<tr>
<td>@Html.LabelFor(a => a.Address.Region.regionName)</td>
<td>@Html.DropDownListFor(a => a.Address.Region.regionId, (SelectList)ViewBag.Regions)</td>
</tr>
当我选择一些项目时,在httppost上,regionId始终为null。请帮忙。
答案 0 :(得分:1)
rm.GetAllRegionsMapper().ToList()
很可能会返回一个包含所有regionId == null
的列表。
此外,为什么您是否已将regionId定义为可为空?它始终是您从DropDownList
或0
选择的密钥,如果选择了非,则无理由将其作为null
。
您很可能会在下拉列表中的关键字regionId
与您在选择并发回选择后尝试获取的regionId
之间产生混淆。将后者称为selectedRegionId
以避免混淆。
希望这些想法可以引导您找到正确的方向并帮助您将问题本地化。