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检查和参数正确传递如下:
但它是给我以下错误的“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调用相同的错误。那么,它一定是路由问题?
答
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) {}
});
请详细说明:为什么要把你的代码的工作,而一个在这个问题没有?在SO上不鼓励使用仅有代码的答案。另外,您的解决方案与接受的答案有何不同? –