MVC DropDownList选择已更改,未触发Ajax

时间:2015-07-01 19:53:47

标签: javascript ajax asp.net-mvc

我是mvc的新手并且已经做了很多寻找,但我无法弄清楚为什么这不起作用。

我有以下查看代码:

$(function() {
    $("#ddlNumberOfRecords").change(function() {

        var numberOfRecords = $("#ddlNumberOfRecords").val();

        $.ajax({
            type: "POST",
            url: '@Url.Action("NumberOfRecordsChanged")',
            data: { numberOfRecords: numberOfRecords },
            success: function(returndata) {
                if (!returndata.ok) {
                    window.alert(' error : ' + returndata.message);
                } else {
                    $('#Grid').html(returndata);
                }
            }
        });
    });
});

@Html.DropDownList("ddlNumberOfRecords", Model.NumberOfRecordsSelectList)

有人可以告诉我这有什么问题吗?另外,有没有办法调试该JavaScript?我在那里放了断点,但它们从不加载。

编辑:这是我的行动。还没有真正的内容,因为我只是想让它在这一点上起作用。但我有一个断点,它永远不会受到打击。

[HttpPost]
    public ActionResult NumberOfRecordsChanged(int numberOfRecords)
    {
        return null;
    }

2 个答案:

答案 0 :(得分:0)

使用您显示的所有内容,代码可以100%正常运行。我做了一个模拟来证明这一点。

<强>控制器

 public ActionResult Index()
        {
            ViewModel model = new ViewModel
            {
                NumberOfRecordsSelectList = new List<SelectListItem>
                {
                   new SelectListItem
                   {
                       Selected = false,
                       Text = "one",
                       Value = "1",
                   },
                    new SelectListItem
                   {
                       Selected = false,
                       Text = "two",
                       Value = "2",
                   },
                }
            };

            return View(model);
        }

    [HttpPost]
    public ActionResult NumberOfRecordsChanged(int numberOfRecords)
    {
        return null;
    }

查看

@model MvcApplication1.Models.ViewModel
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
    $(function() {
        $("#ddlNumberOfRecords").change(function() {

            var numberOfRecords = $("#ddlNumberOfRecords").val();

            $.ajax({
                type: "POST",
                url: '@Url.Action("NumberOfRecordsChanged")',
                data: { numberOfRecords: numberOfRecords },
                success: function (returndata) {
                    //No return data proviced 
                    //if (!returndata.ok) {
                    //    window.alert(' error : ' + returndata.message);
                    //} else {
                    //    $('#Grid').html(returndata);
                    //}
                }
            });
        });
    });
</script>
@Html.DropDownList("ddlNumberOfRecords", Model.NumberOfRecordsSelectList)

如果您收到的其他错误超过了请分享您创建列表项的方式,错误是什么,以及与问题相关的任何其他详细信息。感谢。

答案 1 :(得分:-1)

您似乎正在尝试通过下拉列表中的项目,但实际上是通过所选项目的值发送。

如果是这样,那......

var numberOfRecords = $("#ddlNumberOfRecords").val();

应该是......

var numberOfRecords = $("#ddlNumberOfRecords option").size();