【发布时间】:2017-12-01 04:42:50
【问题描述】:
我有一个由专有 C++ 服务器提供的网站。 代码中有一个标准的 javascript ajax 函数,但我不想开始编辑它。 实际发送位如下:
this.send=function(myawesomemodel)
{
/*Code redacted for brevity*/
obj.req.open('POST',myawesomeurl,true);
obj.req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
obj.req.send(JSON.stringify(myawesomemodel));
}
它曾经将键值对作为查询字符串发送,但现在它需要发送 json。 我可以向这个函数发送一个控制器/动作地址 (myawesomeurl) 用于适当的端点,我可以向它发送一个很棒的对象,该对象将作为基本 C# 模型 (myawesomemodel) 被动作接受:
public ActionResult myawesomeaction(MyAwesomeClass myawesomeclass) { }
对于 .Net 模型:
public class MyAwesomeClass
{
public int A { get; set; }
public int B { get; set; }
public string C { get; set; }
}
请问如何构建控制器将识别的 javascript 对象? 这是我最近的失败:
function MyAwesomeModel()
{
this.A=1;
this.B=2;
this.C='Three';
}
然后:
var anawesomemodel=new MyAwesomeModel();
myawesomeajaxmodel.send(anawesomemodel);
我无法在纯 javascript 中构造正确的对象,因此 mvc 操作会注册它,请问正确的方法是什么?
【问题讨论】:
-
将
content-type与'application/x-www-form-urlencoded'和JSON.stringify()放在一起是没有意义的。如果您发送 json,那么content-type应该是application/json;charset=utf-8(并且您的模型将被正确绑定) -
斯蒂芬!你绝对的粉碎机!这解决了所有问题,非常感谢。