Asp.net mvc 5 从视图中,我可以获得SelectList';s值,而不是它在下拉列表中的位置?
假设我有一个员工ID的员工列表。在控制器的“创建”视图中,我有:Asp.net mvc 5 从视图中,我可以获得SelectList';s值,而不是它在下拉列表中的位置?,asp.net-mvc-5,Asp.net Mvc 5,假设我有一个员工ID的员工列表。在控制器的“创建”视图中,我有: public ActionResult Create() { ViewBag.EmployeeList= db.Employees.ToList().Select(x => new SelectListItem { Value = x.EmployeeID.ToString(), Text = String.Format(x.FirstName + " " + x.LastNa
public ActionResult Create()
{
ViewBag.EmployeeList= db.Employees.ToList().Select(x => new SelectListItem
{
Value = x.EmployeeID.ToString(),
Text = String.Format(x.FirstName + " " + x.LastName)
});
var quote = new Quote();
return View(quote);
}
(旁注:我很确定我在代码中通过在Create视图中再次定义new SelectList
,没有有效地实现SelectList)
然后在创建视图本身中:
<div class="form-group">
@Html.LabelFor(model => model.EmployeeID, htmlAttributes: new { @class = "control-label col-md-4 employee-list" })
<div class="col-md-8">
@Html.DropDownListFor(model => model.EmployeeID, new SelectList(ViewBag.EmployeeList, "Value", "Text"), new { @class = "form-control employee-list" })
@Html.ValidationMessageFor(model => model.EmployeeID, "", new { @class = "text-danger" })
</div>
</div>
这里的目的是,我想使用EmployeeID填充Create视图中的另一个DropDownList字段,例如“分配给经理”。经理将有一个EmployeeID列表,一个EmployeeID可以分配给多个经理。在Create视图中选择一名员工后,JS将用于获取EmployeeID,将其发送到后端,查询Managers表中找到它的位置,将经理列表返回给JS,然后插入页面的HTML
可能会在DropDownList中使用员工的子集,例如,EmployeeID为[3,5,11,15],因此我不能从选项号中减去1来获得EmployeeID。哦,事实证明我需要了解更多关于SQL的信息 我在SQL数据库中植入了如下数据:
context.Employees.AddOrUpdate(x => x.EmployeeID,
new DelegationApprover() { EmployeeID = 0, FirstName = "Eileen", LastName = "Dover" }
new DelegationApprover() { EmployeeID = 1, FirstName = "Wayne", LastName = "Carr" },
new DelegationApprover() { EmployeeID = 2, FirstName = "Richard", LastName = "Head" },
);
我以为我将EmployeeID设置为从0开始,但SQL强制它从1开始。我使用的是以下数据,我认为我使用的是前者:
context.Employees.AddOrUpdate(x => x.EmployeeID,
new DelegationApprover() { EmployeeID = 1, FirstName = "Eileen", LastName = "Dover" }
new DelegationApprover() { EmployeeID = 2, FirstName = "Wayne", LastName = "Carr" },
new DelegationApprover() { EmployeeID = 3, FirstName = "Richard", LastName = "Head" },
);
当我在Employee change上选中
($(this).val())
时,看起来它返回的是选项号,而不是ID值。事实证明,它一直在返回我想要的值。$(this).val()
将为您提供所选的选项值。它不是职位,而是EmployeeID
值。为什么你认为它给了你这个位置,你必须减去1?另外,你不需要在视图中创建第二个SelectList
。只需使用ViewBag.EmployeeList as List
作为第二个参数是的,您是对的,请检查下面的答案=P
context.Employees.AddOrUpdate(x => x.EmployeeID,
new DelegationApprover() { EmployeeID = 1, FirstName = "Eileen", LastName = "Dover" }
new DelegationApprover() { EmployeeID = 2, FirstName = "Wayne", LastName = "Carr" },
new DelegationApprover() { EmployeeID = 3, FirstName = "Richard", LastName = "Head" },
);