私はMVC3レイザーフォームを持っています。ラジオボタンリストと他のいくつかのテキストフィールドがあります。コントローラーの投稿アクションの送信を押すと、RegionIDを除くすべてのフィールドが正しく設定されているビューモデルを取得します。
モデル:
namespace SSHS.Models.RecorderModels
{
public class CreateViewModel
{
...
public int RegionID { get; set; }
...
}
}
コントローラ:
namespace SSHS.Controllers
{
public class RecorderController : Controller
{
...
public ActionResult Create()
{
EntrantDBEntities db = new EntrantDBEntities();
List Regions = new List(db.Region);
List Schools = new List(db.School);
List Settlements = new List(db.settlement);
CreateViewModel newEntr = new CreateViewModel();
ViewBag.Regions = Regions;
ViewBag.Schools = Schools;
ViewBag.Settlements = Settlements;
return View(newEntr);
}
[HttpPost]
public ActionResult Create(CreateViewModel m)
{
EntrantDBEntities db = new EntrantDBEntities();
Entrant e = new Entrant()
{
FatherName = m.FatherName,
Lastname = m.LastName,
LocalAddress = m.LocalAddress,
Name = m.Name,
RegionID = m.RegionID,
PassportID = m.PassportID,
SchoolID = m.SchoolID,
SettlementID = m.SattlementID,
TaxID = m.TaxID,
};
db.Entrant.AddObject(e);
db.SaveChanges();
return RedirectToAction("Index");
}
}
意見:
@model SSHS.Models.RecorderModels.CreateViewModel
@using SSHS.Models
@using (Html.BeginForm("Create", "Recorder", FormMethod.Post))
{
@foreach (Region item in ViewBag.Regions)
{
@Html.RadioButtonFor(m => m.RegionID, item.RegionID)
@Html.Label(item.RegionName) - @item.RegionID
}
...
...
}
Create(CreateViewModel m)メソッドは通常、すべてのテキストボックスからデータを取得しますが、RegionIDは常に0です。