在MVC中进行onchange后,值存储在哪里?

时间:2012-11-24 06:26:45

标签: asp.net-mvc-4 html-select

我想要一个下拉列表,当我点击提交按钮时,它会回发所选的值。

我不知道我是否做得对,但到目前为止我已经四处寻找并提出了这个问题。

我只是想知道我是否做得对,以及一旦回发后它会存储价值。

@using (Html.BeginForm())
{
    @Html.DisplayName("Name:")<br />
    @Html.TextBox("NAME")<br />

    @Html.DisplayName("Password:")<br />
    @Html.TextBox("PASS")<br />

    @Html.DisplayName("Team Name:")<br />
    @Html.DropDownListFor(x => x.Teams, new SelectList(Model.Teams, "value", "TeamNAME"), new {onchange = "submit()"})

    <input type="submit" value="ADD" />
}

想要获得这里的价值

[HttpPost]
        public ActionResult Index()
        {

            //GET VALUE OF THE SELECTED TEAM HERE
            return RedirectToAction("Index");
        }

2 个答案:

答案 0 :(得分:2)

它看起来非常接近 - 唯一的一点是,你应该在使用模型绑定的HTML帮助器方法时保持一致。也就是说,使用TextBoxForDropDownListFor,或TextBoxDropDownList,但不要混用和匹配。

如果使用模型绑定的,那么您应该能够简单地将模型类型作为参数添加到回发操作中:

public ActionResult Index(MyModel postback)

对于未绑定的,您可以使用其名称单独添加参数:

public ActionResult Index(string NAME, string PASS, string TEAM)

(假设你改为@Html.DropDownList("TEAM", new SelectList(Model.Teams, "value", "TeamNAME"), new {onchange = "submit()"})

答案 1 :(得分:1)

详细信息:以下假设您使用的是名为Team的模型,并且您在视图中使用该模型。 (代码未经测试)

查看

@Html.DropDownListFor("Teams", String.Empty)

<强>控制器

[HttpGet]
public ActionResult Index()
{
    ViewBag.Teams = new SelectList(db.Team, "TeamId", "TeamNAME");
    return View();
}

[HttpPost]
public ActionResult Index(Team team)
{
    // Here is your selected Team id
    //team.TeamId

    return View();
}

有关使用DropDownList

的更多信息,请查看本教程

MVC 4 Tutorial