如何从asp下拉列表中获取信息?

时间:2015-04-21 08:00:35

标签: c# asp.net .net asp.net-mvc razor

我有一个带有' kenmerken'的ViewBag。 :

while (reader.Read())
  ViewBag.Kenmerken.Add(new SelectListItem { 
  value = reader.GetString(0),
  Text = reader.GetString(0)
});
Reader.Close();

使用aps.net剃刀的表格:

@using (Html.BeginForm("KenmerkSelectie2", "KenmerkSelectie", FormMethod.Post, new { id = "kenmerk2" }))
{
  @Html.DropDownList("Kenmerken", (SelectList)ViewBag.Kenmerken, 
  "-- Selecteer        een kenmerk--", 
  new{
      onchange = "document.getElementById('kenmerk2').submit();"
     });
}

和httppost方法

[HttpPost]
public ActionResult KenmerkSelectie2(string value)
{
   var foo = ViewBag.Kenmerk;
   var foo2 = value;
   var foo3 = ViewBag.Kenmerken;
   return View();
}

每个foo都为null,如何获取所选值?

4 个答案:

答案 0 :(得分:2)

您已经提供了字段Kenmerken的名称,但您的HttpPost方法需要一个名为value的值,请更改其中任何一个匹配。

你应该认真考虑为此创建一个模型,例如:

public class MyViewModel
{
    public string SelectedValue { get; set; }
    public List<SelectListItem> Values { get; set; }
}

然后在您看来,您可以这样做:

@model MyViewModel

 @Html.DropDownListFor(m => m.SelectedValue, Model.Values, 
     "-- Selecteer        een kenmerk--", new{
  onchange = "document.getElementById('kenmerk2').submit();"
 })

此外,当您正在使用它时,请提取内联JavaScript。

答案 1 :(得分:0)

首发


Viewbag仅用于在控制器和视图之间传递数据


第二期


您需要在操作的参数中指定选择字段的名称。

[HttpPost]
public ActionResult KenmerkSelectie2(string Kenmerken)
{
   var foo2 = Kenmerken;
   return View();
}

答案 2 :(得分:0)

尝试:

[HttpPost]
public ActionResult KenmerkSelectie2(string kenmerken)
{ 
    var foo3 = kenmerken;
    return View();
}

但使用模型绑定是一个好主意:http://www.codeproject.com/Articles/551576/ASP-NET-MVC-Model-Binding-and-Data-Annotation

答案 3 :(得分:0)

试试:

这是您视图中的下拉列表:

  @Html.DropDownList("Kenmerken", (SelectList)ViewBag.kenmerken)

然后使用Jquery脚本获取下拉列表的值并将其放入ActionResult帖子中

$(document).ready(function () {  
  $('Kenmerken').change(function(){
        var value = $('Kenmerken').val();
        var url = YourControllerName/KenmerkSelectie2
        $.ajax({
            url:url,
            cache:false,
            type:'POST',
            data: {
                MyDropDownValue : value
            },
            success: function()
            {

            }
        })
     });
  });

和你的actionResult:

[HttpPost]
public ActionResult KenmerkSelectie2(string MyDropDownValue)
{
   var foo4 = MyDropDownValue //here    
   var foo = ViewBag.Kenmerk;
   var foo2 = value;
   var foo3 = ViewBag.Kenmerken;
   return View();
}
相关问题