我一直试图将JSON数据传递到MVC4控制器中,但到目前为止还没有成功。
同时,我已经Google了数千次。
解决这个问题的关键是要字符串化JSON对象,定义一个模型并将参数作为该定义的模型获取,或者定义contentType。
我采用了定义模型的方法来传递JSON到控制器中。
如果我每次尝试将JSON参数传递到服务器时都必须定义模型,我就不会在MVC4上构建我的应用程序,我会放弃!
有没有另一种方法可以在没有为JSON数据创建模型的情况下从Ajax调用中获取JSON数据?
以下是我的示例代码。
一个Ajax调用是什么。
同时,我已经Google了数千次。
解决这个问题的关键是要字符串化JSON对象,定义一个模型并将参数作为该定义的模型获取,或者定义contentType。
我采用了定义模型的方法来传递JSON到控制器中。
如果我每次尝试将JSON参数传递到服务器时都必须定义模型,我就不会在MVC4上构建我的应用程序,我会放弃!
有没有另一种方法可以在没有为JSON数据创建模型的情况下从Ajax调用中获取JSON数据?
以下是我的示例代码。
[HttpPost]
public ActionResult DATACRUD(string XmlParms)
{
return Json(new{ data = XmlParms });
}
// Just example.
一个Ajax调用是什么。
$.ajax({
type: "POST",
url: "DATACRUD.json",
data: JSON.stringify({data:"test"}),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false, //_async,
success: function (result) {
}
});
Ajax成功调用了控制器中的操作,但参数为null。
请不要告诉我定义JSON参数的模型是解决此问题的唯一方法。
如果我必须这样做,那将会非常令人沮丧。
更新:
如果我必须匹配键名和参数名,我也会放弃。
在我的应用程序中,JSON数据通常是这样的。
{
"service": "COMMON",
"method": "MENU_SUBLIST",
"UID": "1000007",
"ULID": "stackoverflow",
"UNM": "queston",
"SITE": "1",
"DEPT": "2",
"LANG": "ko",
"MENUID": "0000",
"STEPMENU": "",
"ACTIONNAME": ""
}
但问题在于,JSON数据有许多不同种类的键名。
我无法一一匹配这些名称。在这种情况下,我该怎么办?
(请注意:像下面这样包装数据并不是我的解决方案,因为存在兼容性问题。)
{ XmlParms : {
"service":"COMMON",
"method":"MENU_SUBLIST",
"UID":"1000007",
"ULID":"stackoverflow",
"UNM":"queston",
"SITE":"1",
"DEPT":"2",
"LANG":"ko",
"MENUID":"0000",
"STEPMENU":"",
"ACTIONNAME":""
}
}
JSON.stringify({XmlParms:"test"})
吗? - undefined