如何创建一个javascript模型发送到MVC控制器?

时间:2017-11-30 01:00:48

标签: javascript asp.net-mvc

我有一个专有的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动作会注册它,请问正确的方法是什么?

2 个答案:

答案 0 :(得分:0)

var myawesomemodel = {
    A : 1,
    B : 2,
    C : 'Three'
}

答案 1 :(得分:0)

对于遇到相同问题的其他人找到此页面,Stephen Muecke将其钉住

将ajax对象更改为:

this.send=function(myawesomemodel)
{
 /*Code redacted for brevity*/   
 obj.req.open('POST',myawesomeurl,true);
 obj.req.setRequestHeader('Content-type','application/json;charset=utf-8');
 obj.req.send(JSON.stringify(myawesomemodel));
}