asp.net如何将 ID 得到下拉列表中的项目?

标签: Asp.net HTML Razor C#
发布时间: 2017/3/26 2:38:43
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这是我最后一个线程后续︰如何做创建 HTML 选择与只有项目在数据库中 Asp.Net Razor?

如何将 ID 得到中下拉列表中选定的项目?这个想法是在下拉列表中显示的名称连接到客户 Id。

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

解决方法 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
官方微信
官方QQ群
31647020