我正在使用 asp.net mvc 4 web app 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 属性。创建动作:
//
// 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 的新手,我不确定表单传递给 post create 操作的内容:它传递的是 jobtype 对象还是 jobtype id?为什么它没有为创建的作业设置jobtype id?我是否必须在创建后操作中设置我自己的作业类型 ID?如果是这样,我如何获得 DropDownList 的选定值?