【发布时间】:2009-09-09 08:00:08
【问题描述】:
有人可以帮我从 asp.net mvc 的下拉列表中获取值吗?
我可以从文本框等中获取值...但是,我如何获得这两个东西...
- 从控制器类中获取下拉列表的选定项值
- 从控制器类中获取下拉列表的所有项目列表
谢谢
【问题讨论】:
标签: asp.net asp.net-mvc
有人可以帮我从 asp.net mvc 的下拉列表中获取值吗?
我可以从文本框等中获取值...但是,我如何获得这两个东西...
谢谢
【问题讨论】:
标签: asp.net asp.net-mvc
您可以像获取文本框一样从下拉列表中获取选定的值。
使用默认模型绑定
[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) %>
【讨论】:
好吧,由于您提供的信息太少,因此很难正确回答,但通常您会在控制器的 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();
}
从下拉列表中获取所有值与首先将它们放入选择列表中相同。我将假设您有一个方法被调用来用项目填充下拉列表。只需从控制器中调用此方法并适当地处理值。
【讨论】:
我认为您需要重新考虑这一点。下拉列表的值应该来自控制器并发送到视图以在下拉列表中显示以允许用户选择。然后页面表单将选择的值发送回控制器。数据应始终在服务器端,视图仅用于显示。
【讨论】: