AJAX没有调用所需的C#控制器方法

本文关键字:控制器 方法 调用 AJAX | 更新日期: 2023-09-27 18:02:54

所以我在这个问题上已经坚持了一段时间,并且对使用AJAX还很陌生,我遇到的问题是,当我在应该调用的C#方法上设置断点时,下面的AJAX永远不会到达,也不会显示错误。

函数getCheckBoxes在我逐步了解FireBug的情况时被调用和执行。

第二部分将是我试图用AJAX执行的C#方法,我去掉了里面的代码,因为它甚至没有到达它,所以它不会成为问题。它包含在TestScriptResultsController中。我尝试过POSTGET两种类型。如有任何帮助,我们将不胜感激。

getCheckBoxes = function getCheckBoxes () {
    //var firstDate = '@Model.FirstDate';
    //var lastDate = '@Model.LastDate';
    var fDateChanged = $("#FirstDate").datepicker('getDate');
    var lDateChanged = $("#LastDate").datepicker('getDate');
    var platformConfig = '@Model.PlatformConfigSelected';
    var triggered = '@Model.TriggeredSelected';
    $.ajax({
        url: '@Url.Action("BranchCheckBoxes", "TestScriptResults")',
        type: 'POST',
        data: { fDateChanged: firstDate, lDateChanged: lastDate, platformConfig: platformConfig, triggered: triggered },
        success: function (data) { $('#checkBoxes').html(data); }
    });
}

控制器动作:

    public ActionResult BranchCheckBoxes(DateTime firstDate, DateTime lastDate, string platformConfig, string triggered)
    {
        return PartialView(trs);
    }

AJAX没有调用所需的C#控制器方法

  1. 对于data,您的JavaScript对象初始值设定项语法是向后的。尝试使用:data: { firstDate: fDateChanged, lastDate: lDateChanged, platformConfig: platformConfig, triggered: triggered }正确的语法是{ 'key': 'value' }

  2. 除非您在Razor页面中,否则'@Url.Action("BranchCheckBoxes", "TestScriptResults")'将不起作用。确保您的JavaScript位于.cshtml或.vbhtml页面内,或者(最好(使用url: '/TestScriptResults/BranchCheckBoxes/'

  3. BranchCheckBoxes()需要有一个[HttpPost]属性,因为MVC默认为控制器操作的GET:

    [HttpPost]
    public ActionResult BranchCheckBoxes (...)
    

感谢Jason向我指出HTTP响应,这让我找到了答案,因为.datepick('getDate'(返回了一个对象而不是字符串,因此在它进入我设置的ActionResult方法之前就中断了。我改变了从日期选择器(AJAX调用中的数据行(检索值的方式,并更改了actionResult参数,它现在可以工作了。我是StackOverflow的新手,他的评论对找到答案很有帮助,有什么办法可以给Jason一些意见吗?

日期选择器的JavaScript:

            $(function () {
            $("#FirstDate").datepicker()
              .on("input change", function (e) {
                  var firstDateChanged = $(this).val();
                  firstDateChange();
              });
        });

AJAX更改:

data: { firstDate: firstDateChanged, lastDate: lastDateChanged, platformConfig: platformConfig, triggered: triggered },

控制器更改:

        public ActionResult BranchCheckBoxes(string firstDate, string lastDate, string platformConfig, string triggered)
    { }