1

私はこのようなdropdowlistを持っています:

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になります。助けてください。

4

1 に答える 1

1

rm.GetAllRegionsMapper().ToList()all を含むリストを返す可能性は十分にありますregionId == null

また、なぜregionId を nullable として定義したのですか? それは常にあなたが選択したキーであるか、選択されDropDownList0いない場合は、これまでと同じようにする理由はありませんnull.

regionIdそれがドロップダウンリストのキーであり、regionId選択が行われてポストバックされた後に取得しようとしている である を混同する可能性が非常に高いです。selectedRegionId混乱を避けるために、後者を呼び出します。

これらのいくつかのアイデアが正しい方向に導き、実際の問題を特定するのに役立つことを願っています.

于 2012-08-25T15:12:43.117 に答える