私はasp.netmvc4 Webアプリc#を使用しています。私は次のモデルを持っています:
public class Job
{
public int id { get; set; }
public string description { get; set; }
public string company { get; set; }
public JobType jobType { get; set; }
//public int JobTypeId { get { return this.jobType.id; } }
}
ここで、DropDownListを介してjobType属性が設定されるcreateアクションを記述します。作成アクション:
//
// GET: /Job/Create
public ActionResult Create()
{
IEnumerable<JobType> jobtypes = db.JobTypes.ToList();
ViewData.Add("jobTypeList", new SelectList(jobtypes , "id", "name"));
return View();
}
//
// POST: /Job/Create
[HttpPost]
public ActionResult Create(Job job)
{
if (ModelState.IsValid)
{
db.Jobs.Add(job);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(job);
}
意見:
<div class="editor-label">
@Html.LabelFor(model => model.jobType)
</div>
<div class="editor-field">
@Html.DropDownList("jobTypeList")
@Html.ValidationMessageFor(model => model.jobType)
</div>
DropDownListは、既存のジョブタイプを正常に一覧表示するように機能しています。ただし、ジョブが作成されると、ジョブのジョブタイプは設定されません(作成されたジョブのジョブ行にジョブタイプIDが設定されません)。asp.net mvcを初めて使用するため、フォームが作成後のアクションに何を渡すのかわかりません。ジョブタイプオブジェクトまたはジョブタイプIDを渡しますか?作成されたジョブのジョブタイプIDが設定されないのはなぜですか?作成後のアクションで自分自身のジョブタイプIDを設定する必要がありますか?もしそうなら、どうすればDropDownListの選択された値を取得できますか?