JSON作为null传递给方法参数
JSON passing as a null to a method argument
我终于尝试使用KnockoutJS了。我探索了将JSON数据发送到MVC 4中的C#方法的较短方法,但最终使用了AJAX方法。我对以下内容有些困惑,希望有人能帮忙。
Javascript
var VM = function () {
var self = this;
self.ValidateAndCreate = function () {
console.log("entered");
var a = {
b: "1",
c: "2",
d: {
e: "3"
}
};
var input = { data: a }
console.log(JSON.stringify(input));
$.ajax({
url: '/McAfee/ValidateAndCreatePartner',
data: JSON.stringify(input),
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (result) {
console.log('success');
}
});
}
}
var viewModel = new VM();
ko.applyBindings(viewModel);
C#
[HttpPost]
public void ValidateAndCreatePartner(string data)
{
var x = JsonConvert.DeserializeObject(data);
RedirectIfSuccess();
}
当前发生的情况是,ValidateAndCreatePartner
激发,但参数data
为null,随后NewtonSoft.Json.JsonConvert.DeserializeObject
失败。如何解决此问题?
MVC中最简单的方法是根据数据创建类:它更干净!例如,在您的示例中,您可以尝试以下操作:
[HttpPost]
public ActionResult Test(TestClass data) {
RedirectIfSuccess();
}
public class TestClass
{
public string b { get; set; }
public string c { get; set; }
public TestSubClass d { get; set; }
}
public class TestSubClass
{
public int e { get; set; }
}
由于内容类型为application/json
,视图函数的参数将自动反序列化(不再是字符串)。
在服务器端创建一个与您发送的视图匹配的视图模型,并将其用作视图的类型参数:
public class D {
public string e {get;set;}
}
public class A {
public string b {get;set;}
public string c {get;set;}
public D d {get;set;}
}
[HttpPost]
public void ValidateAndCreatePartner(A data)
{
// no need to deserialize data
RedirectIfSuccess();
}
相关文章:
- 如何确保函数/方法参数为certian类型
- 我怎么能读“;.on()"jQuery中的方法参数
- Javascript 方法参数转义
- 对象属性来自方法参数时未定义
- 在 c# 中将多维 JavaScript 数组绑定为方法参数
- 如何通过javascript获取post()方法参数
- AngularJS$http://.NET Web API-获取400(错误请求)或NULL POST操作方法参数
- _.chain()中的方法参数
- springmvc:如何在没有控制器方法参数的情况下以mvc传递参数
- JSON作为null传递给方法参数
- Javascript,可以在没有 eval 的情况下传递未声明的方法参数
- 单词“in”是什么意思?在文档中的方法参数列表中
- 如何返回对象方法参数
- 实例变量vs方法参数
- 如何传递Json字符串作为javascript方法参数
- 将方法参数/参数传递给方法引用绑定,匿名,命名
- 不合逻辑的Passport验证方法参数
- 调试javascript方法参数
- 如何使用javascript获取方法参数的值
- Javascript在字符串模板中插入方法参数