【问题标题】:How to pass a selected dropdown value to the MVC controller?如何将选定的下拉值传递给 MVC 控制器?
【发布时间】:2015-07-02 04:17:52
【问题描述】:

这是 AJAX 方法和 MVC 控制器。 下拉列表位于 URL“http://localhost:1424/home/drop”中。所以导航后,我从下拉列表中选择一个状态,然后当我导航到 url“http://localhost:1424/home/GetStates”时,json 数据为空。我在 url 上得到的 JSON 是 {"selectedCountyId":null}。请帮忙。!!!!!!!!!!!!!!!!!!

  $('.ddlCountry').change(function () {
        $('#ddlState').empty();
        $.ajax({
            type: "POST",
            dataType:"json",
            url: "Home/GetStates",
            data: { Id: $('.ddlCountry').val() },
        });
    });




 public ActionResult GetStates(string Id)
    {

        return Json(new { selectedCountyId = Id }, JsonRequestBehavior.AllowGet);
    }

【问题讨论】:

  • 能不能在控制器方法上下断点判断Id参数是否有值?
  • 您使用$('.ddlCountry') 表明您可能有多个带有class="ddlCountry" 的元素?或者你的意思是$('#ddlCountry')?它应该是data: { Id: $(this).val() }, 以确保您引用正确的元素。还可以使用url: '@Url.Action("GetStates", "Home")', 确保正确生成您的网址。

标签: asp.net json asp.net-mvc asp.net-mvc-4 cascadingdropdown


【解决方案1】:

您正在使用类选择器,因此可能是在 DOM 中查找多个元素。

另外我建议你使用Url.Action来生成url,不要这样串起来,因为url会在将来给你带来麻烦。

将你的jquery代码修改为:

$('.ddlCountry').change(function () {
        $('#ddlState').empty();
        var selected = $(this).val(); // get current dropdown element selected value
        $.ajax({
            type: "POST",
            dataType:"json",
            url: '@Url.Action("GetStates","Home")',
            data: { Id: selected  },
        });
});

【讨论】:

    【解决方案2】:

    试试这个

    data: JSON.stringify({ Id: $('.ddlCountry').val() }),
    

    还要确保您的dropdown 具有class ddlCountry。如果这是您的dropdown 中的id,那么您需要像这样通过id 获得value

    data: JSON.stringify({ Id: $('#ddlCountry').val() }),
    

    【讨论】:

    • 完全没有必要,如果你确实使用过,那么contentType选项也需要设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    相关资源
    最近更新 更多