使用下拉列表设置字段以选择值
本文关键字:选择 字段 设置 下拉列表 | 更新日期: 2023-09-27 17:57:05
我正在使用 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; } }
}
现在我想编写一个创建操作,其中 jobType 属性是通过 DropDownList 设置的。创建操作:
//
// 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>
下拉列表工作正常,列出了现有的作业类型。但是,创建作业时,不会设置作业的作业类型(未在创建的作业的作业行中设置作业类型 ID)。由于我是 asp.net mvc 的新手,我不确定表单传递给 post create 操作的内容:它是传递作业类型对象还是作业类型 id?为什么它没有为创建的作业设置作业类型 ID?我是否必须在创建后操作中设置自己的作业类型 ID?如果是这样,如何获取下拉列表的选定值?
编辑:
因此,要在下拉列表中获取所选值的id,我只有这样的一行:
int contentId= APIFactory.getContentAPI().getID(department.SelectedValue);
其中,函数 getId() 采用一个名称(下拉列表中的值),然后对所选部门的 ID 执行数据库查询。这是我的 getID() 函数
public int getID(String deptName)
{
Dictionary<string, object> where = new Dictionary<string, object>();
where.Add(DEPTNAME, deptName);
DataTable dt = db.Query(ID, TABLE, where);
return (int)dt.Rows[0][ID];
}
注意:你不需要整个APIFactory的东西,你可以把查询扔进去而不是我有的行,它也可以工作。但是,如果您经常使用相同的查询,我会推荐它。
编辑:由于您使用的是 cshtml 页而不是 aspx 页,因此请使用此处描述的方法获取值,然后使用我的方法获取 id:如何获取下拉列表所选值
按照您现在设置视图的方式,只会发布所选作业类型的 ID。
可以将 Create 方法更新为仅接受int jobTypeList
,然后根据提供的值创建添加作业。