1

我有这样的下拉列表:

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 始终为空。请帮忙。

4

1 回答 1

1

很有可能rm.GetAllRegionsMapper().ToList()返回一个包含 all 的列表regionId == null

另外,为什么您将 regionId 定义为可为空的?它始终是您从中选择的键,DropDownList或者0如果未选择,则没有理由像以往一样拥有它null

您很可能会混淆regionId下拉列表中的关键和regionId您在选择并回发后尝试获取的关键。调用后者selectedRegionId以避免混淆。

希望这几个想法将引导您找到正确的方向并帮助您定位实际问题。

于 2012-08-25T15:12:43.117 回答