从视图中,我可以获取SelectList的值而不是其在DropDownList中的位置吗?

时间:2018-06-20 04:16:33

标签: 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.LastName)
    });

    var quote = new Quote();
    return View(quote);
}

(旁注:我很确定通过在创建视图中再次定义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>

我想编写一个JS / JQuery函数,该函数在选定的Employee更改时获取EmployeeID的值。目前,这只是给我一个选项号:

$(document).ready(function () {
    $('.employee-list').change(function () {
        console.log($(this).val());
    });
});

这里的目的是我想使用EmployeeID来填充Create视图中的另一个DropDownList字段,例如“分配给经理”。经理将拥有一个EmployeeID列表,并且一个EmployeeID可以分配给多个Manager。在“创建”视图中选择一个Employee后,将使用JS来获取EmployeeID,将其发送到后端,在Managers表中查询找到的EmployeeID,将该Manager列表返回给JS,然后插入到HTML的HTML中。页面。

DropDownList中可能会使用一部分Employees,例如,EmployeeID为[3、5、11、15],因此我不能仅从选项号中减去1来获得员工编号。

1 个答案:

答案 0 :(得分:0)

糟糕,事实证明我需要了解有关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" },
);

当我检查($(this).val())的员工变动时,似乎正在返回其选项号而不是ID值。事实证明,它一直在返回我想要的值。