MVC5:通过Ajax获取JSON不正确地将数据传递给控制器​​

MVC5:通过Ajax获取JSON不正确地将数据传递给控制器​​

问题描述:

我对MVC非常陌生,并且对MVC/AJAX调用有疑问。MVC5:通过Ajax获取JSON不正确地将数据传递给控制器​​

我想从MVC控制器获取数据,但它一直说传入参数为NULL。

我的Javascript调用如下,我硬编码ID:1245作为测试。

$.ajax({ 
       type: "GET", 
       url: 'MDT/Detail', 
       data: JSON.stringify({ id: 1245 }), 
       contentType: "application/json", 
       dataType: "JSON", 
       success: function (data) { 
        console.log(data); 
       }, 
       fail: function (data) {  
       } 
      }); 

以下是在控制器中的代码..

[Route("MDT/Detail/{id}")] 
    public JsonResult Detail(int? id) 
    { 
     ITS.Models.ComputerDetail cp = GetDataFromDatabase(id.Value); 

     return Json(cp, JsonRequestBehavior.AllowGet); 
    } 

我已经在Firebug检查和参数正确传递如下:

enter image description here

但它是给我以下错误的“ID”参数

Exception Details: System.InvalidOperationException: Nullable object must have a value. 

我搞不​​清楚我做错了什么。你能帮我解决这个错误吗?

如果我使用了此URL(http://localhost:6481/MDT/Detail?id=1245),它将返回JSON数据。但是,如果我使用(http://localhost:6481/MDT/Detail/1245),它将显示与JQuery AJAX调用相同的错误。那么,它一定是路由问题?

data: { id: 1245 },

更多关于AJAX更换data: JSON.stringify({ id: 1245 }),可以发现in it's documentation

var youridvalue = 1254; 

$.ajax({ 
    type: "POST", 
    url: '@Url.Content("~/MDT/Detail")?id=' + youridvalue,   
    contentType: "application/json", 
    dataType: "JSON", 
    success: function(data) { 
     console.log(data); 
    }, 
    fail: function(data) {} 
}); 
+0

请详细说明:为什么要把你的代码的工作,而一个在这个问题没有?在SO上不鼓励使用仅有代码的答案。另外,您的解决方案与接受的答案有何不同? –