Asp.net mvc 5 从视图中,我可以获得SelectList';s值,而不是它在下拉列表中的位置?

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

假设我有一个员工ID的员工列表。在控制器的“创建”视图中,我有:

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" },
);