这是我上一个帖子的后续内容:How Do I Create A HTML Select With Only Items In Database In Asp.Net Razor?
如何从DropDownList中选择的项目中获取ID?这个想法是下拉列表中显示的名称连接到'CustomerId'。
http://i.imgur.com/2756GKl.png
PS 我不想用最后一个线程中的所有代码填充这个线程,因为它会变得非常混乱和混乱,所以如果你需要查看这段代码的引用,看看在另一个线程。
HTML代码
@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("/");
}
答案 0 :(得分:1)
再看看你如何定义下拉列表:
@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