我如何从下拉列表中的项目获得ID
本文关键字:项目 ID 下拉列表 | 更新日期: 2023-09-27 18:14:18
这是我上一个线程的后续:我如何在Asp中创建一个只有数据库项目的HTML选择?净剃须刀吗?
如何从下拉列表中选择的项目获得ID ?这个想法是,在下拉菜单中显示的名称连接到一个'CustomerId'。
https://i.stack.imgur.com/km61P.pngPS我不想用上一个线程的所有代码填充这个线程,因为它会变得非常混乱和混乱,所以如果你需要查看这段代码中的引用,请查看另一个线程。
@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("/");
}
再看一下您是如何定义下拉列表的:
@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