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

时间:2016-08-17 20:27:04

标签: javascript c# ajax

所以我已经坚持了一段时间并且使用AJAX相当新,我遇到的问题是当我在C#方法上设置一个断点时我应该调用它来调用它它永远不会到达,也不会显示任何错误。

当我逐步了解FireBug发生的事情时,正在调用并执行函数getCheckBoxes

第二部分将是我试图用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);
    }

2 个答案:

答案 0 :(得分:1)

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

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

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

    [HttpPost]
    public ActionResult BranchCheckBoxes (...)
    

答案 1 :(得分:0)

感谢Jason指出我的HTTP响应引导我得到答案,因为.datepick(' getDate')返回一个对象而不是一个字符串,因此在它可以进入ActionResult方法之前断开有安装。我改变了我从datepicker中检索值的方式,我在AJAX调用中的数据行,我改变了我的actionResult参数,现在它正在工作。有没有办法可以给Jason一些关于这个问题的点我是StackOverflow的新手,他的评论对于得到答案非常有帮助?

datePicker的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)
    { }