如何在asp.net mvc3中获取下拉列表的选定值?

时间:2013-01-30 10:04:55

标签: c# asp.net-mvc sql-server-2008 html-select

这是我的代码Display data from the database into DropDownList in asp.net MVC3 在这里,我现在可以将数据从数据库显示到下拉列表中,但现在我希望如果我从下拉列表数据中选择任何东西,我希望在我的存储过程中传递所选值。我知道可能有同样的问题或者已经被问到但是我没有得到我想要的答案。如果有人可以一步一步地解释我,或者给我一些有用的链接。

3 个答案:

答案 0 :(得分:1)

此代码未经过完整测试和实施。

您可以使用onchange的{​​{1}}事件来实现它。

dropdownlist

使用javascript和ajax处理它

@Html.DropDownListFor(x => x.SelectedItemValue,new {@onchange="passvalue(this);"})

现在您可以将所选值提供给控制器

<script type="text/javascript">
  function passvalue(e){
      $.ajax({
         type: 'POST',
         dataType: 'json',
         url: '@Url.Action("Index", "Home")',
         data: ({ selectedValue: e.innerHTML }),
         success: function (result) {
                                    },
         error: function (result) {
                    alert('error');
                }
      });
  }
  </script>

希望有所帮助

答案 1 :(得分:0)

这是实现这一目标的一种方法:

订阅下拉列表的change事件,并调用将所选值传递给存储过程的操作方法(例如ajax)。

答案 2 :(得分:0)

有几种方法。最简单的方法之一是使ViewModel具有要在下拉列表中呈现的SelectListItems集合以及要进行选择的项目。在下面的示例代码中,我当然使用硬编码值来演示这一点!

<强>视图模型

public class TestViewModel
{
    public IEnumerable<SelectListItem> TestListItems
    {
        get
        {
            return new List<SelectListItem>
            {
                new SelectListItem { Text = "Item 1", Value = "1" },
                new SelectListItem { Text = "Item 1", Value = "1" },
                new SelectListItem { Text = "Item 1", Value = "1" },
            };
        }
    }

    public string SelectedItemValue { get; set; }
}

查看

<p>@Html.DropDownListFor(x => x.SelectedItemValue, new SelectList(Model.TestListItems, "Value", "Text"))</p>

<强>控制器

public ActionResult Index()
{
    var viewModel = new TestViewModel();
    return View(viewModel);
}

[HttpPost]
public ActionResult Index(TestViewModel viewModel)
{
    string youChose = viewModel.SelectedItemValue;
    // ...
}

此外,要突出显示该集合不必是SelectListItem,也可以是其他类型。然后,您需要做的就是更改视图以执行.Select转换为SelectListItem。为简单起见,我刚刚让ViewModel直接使用它。