从asp.net mvc下拉列表中获取值

时间:2009-09-09 08:00:08

标签: asp.net asp.net-mvc

有人可以帮助我从asp.net mvc的下拉列表中获取值吗?

我可以从文本框等获取值......但是,我如何获得这两件事......

  1. 从控制器类
  2. 获取选定项目下拉列表的值
  3. 从控制器类获取下拉列表的所有项目列表
  4. 由于

3 个答案:

答案 0 :(得分:15)

您可以从下拉列表中获取与文本框相同的选定值。

使用默认模型绑定

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetValueExample(string MyList) {
  //MyList will contain the selected value
  //...
}

或来自FormCollection

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetValueExample(FormCollection form) {
  string val = form["MyList"];
  //...
}

或来自请求

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetValueExample(string MyList) {
  string val = Request.Form["MyList"];  //or
  val = Request["MyList"];
  //...
}

您的下拉列表名为“MyList”。

<%= Html.DropDownList("MyList", MyItems) %>

或直接HTML

<select name="MyList">
  <option value="1">Item 1</option>
  <option value="2">Item 2</option>
</select>

浏览器只会从下拉列表中提交所选值,而不是所有其他值。要获取所有其他项的列表,您应该首先调用填充列表的代码(假设您使用了Html.DropDownList())。

<强>更新

[AcceptVerbs(Http.Get)]
public ActionResult GetValueExample() {
  ViewData["MyItems"] = GetSelectList();
  return View();
}

[AcceptVerbs(Http.Get)]
public ActionResult GetValueExample(string MyList) {
  //MyList contains the selected value
  SelectList list = GetSelectList(); //list will contain the original list of items
  //...
}

private SelectList GetSelectList() {
  Dictionary<string, string> list = new Dictionary<string, string>();
  list.Add("Item 1", "1");
  list.Add("Item 2", "2");
  list.Add("Item 3", "3");
  return new SelectList(list, "value", "key");
}

//...

<%= Html.DropDownList("MyList", ViewData["MyItems"] as SelectList) %>

答案 1 :(得分:1)

由于您提供的信息很少,因此很难正确回答,但通常您会在Controller的post方法中获得所选值。

这样的事情可能会更好地解释它:

考虑使用此下拉列表:

  //instantiate the dropdownlist in the controller method.
  public ActionResult Create() {
     List<string> items = new List<string>() {"first", "second", "third"};
     SelectList SomeSelectItems = new SelectList(items);
     ViewData["list"] = SomeSelectItems;
    return View();      
  }
  <%= Html.DropDownList("DDL", (SelectList)ViewData["list"]) %>

在您的控制器中,您将获得下拉列表的值,如下所示:

 [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(string DDL)
    {
        string theValue = DDL;
        return View();
    }

要从下拉列表中获取所有值,请将它们放在首先放入选择列表中。我假设你有一个方法被调用来填充下拉列表中的项目。只需在控制器中调用此方法并适当地处理值。

答案 2 :(得分:1)

我认为你需要重新考虑这一点。下拉列表的值应来自控制器并发送到视图以在下拉列表中显示以允许用户选择。然后页面表单将所选值发送回控制器。数据应始终位于服务器端,视图仅供显示。