【问题标题】:How to get information from asp dropdownlist?如何从asp下拉列表中获取信息?
【发布时间】:2015-04-21 08:00:34
【问题描述】:

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

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

还有一个使用 aps.net razor 的表单:

@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 都是空的,我如何获得选中的值?

【问题讨论】:

  • ViewBag 用于将数据从控制器传递到视图(而不是从视图到控制器)
  • ViewBag 在回发之间不保存

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


【解决方案1】:

您已指定字段名称 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 提取出来。

【讨论】:

  • 哦哇,这很容易...... THX !我正在寻找关于 asp 表单的可读文档..
  • @user3432681 没问题很高兴我能提供帮助。从 Web 表单迁移是一个很大的变化,但是当您知道如何做时,事情会变得容易得多:)。我会看看使用模型,也许会做一些关于它的教程,因为这会让你的事情变得更容易。
【解决方案2】:

第一期


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


第二期


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

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

【讨论】:

    【解决方案3】:

    尝试:

    [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

    【讨论】:

      【解决方案4】:

      试试看:

      这是您视图中的下拉菜单:

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

      【讨论】:

        猜你喜欢
        • 2022-08-02
        • 2017-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多