我如何从下拉列表中的项目获得ID

本文关键字:项目 ID 下拉列表 | 更新日期: 2023-09-27 18:14:18

这是我上一个线程的后续:我如何在Asp中创建一个只有数据库项目的HTML选择?净剃须刀吗?

如何从下拉列表中选择的项目获得ID ?这个想法是,在下拉菜单中显示的名称连接到一个'CustomerId'。

https://i.stack.imgur.com/km61P.png

PS我不想用上一个线程的所有代码填充这个线程,因为它会变得非常混乱和混乱,所以如果你需要查看这段代码中的引用,请查看另一个线程。

@Html.LabelFor(m => m.SelectedCustomerId)
@Html.DropDownListFor(m => m.SelectedCustomerId, Model.CustomerID)

RegisterController

[HttpPost]
public ActionResult Register(string registername, string registerpassword, string registerconfirmpassword, int customerId)
{
    if (ModelState.IsValid)
    {     
    this.customerId = Request["CustomerID"]);
    //Register new user with this information
    //Removed for clarity
    return Redirect("/");
}

我如何从下拉列表中的项目获得ID

再看一下您是如何定义下拉列表的:

@Html.DropDownListFor(m => m.SelectedCustomerId

大致呈现为:

<select name="SelectedCustomerId" id="SelectedCustomerId"

因此下拉列表的值将作为SelectedCustomerId=5(或选择的任何值)返回。因此,为了捕获它,您需要使用相同的名称声明您的参数(大小写不敏感):

[HttpPost]
public ActionResult Register(..., int selectedCustomerId)

然而,还有另一种可能更好的方法。注意,您的操作中已经有4个参数。这已经不是很好读了。更好的方法是定义一个模型类,或者重用已经用于呈现视图的模型类,并使其成为操作的唯一参数。然后使用它的属性,因为它们将被模型绑定器填充:

[HttpPost]
public ActionResult Register(TheModelType model)
{
    model.SelectedCustomerId // to access the selected customer id