2015-07-01 22 views
-3

我是新来的mvc和一直在做很多看,但我不明白为什么这是行不通的。MVC DropDownList选择更改没有触发Ajax

我有以下几种观点的代码:

$(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; 
    } 
+0

您发布的所有代码看起来都不错。您是否使用过浏览器的开发者工具来查看AJAX调用是否被发送或者事件是否正确连接? – br4d

+0

我没有。我如何在Chrome中执行此操作?我打F12,但是我在那找什么? –

+0

检查网络部分以查看AJAX请求并查看来自服务器和js控制台的错误的响应。 – br4d

回答

-1

看来你试图越过数在下拉项目,但其实都是发送过所选项目的价值

如果是这样,这...

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

应该是这样......

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

Nah。我想要下拉的选定值。 –

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) 

如果您收到另一个错误比请分享你如何创建列表项,是什么错误,以及任何其他细节与问题有关。谢谢。

相关问题