【问题标题】:How to create a javascript model to send to an MVC controller?如何创建一个 JavaScript 模型发送到 MVC 控制器?
【发布时间】: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 (并且您的模型将被正确绑定)
  • 斯蒂芬!你绝对的粉碎机!这解决了所有问题,非常感谢。

标签: javascript asp.net-mvc


【解决方案1】:
var myawesomemodel = {
    A : 1,
    B : 2,
    C : 'Three'
}

【讨论】:

    【解决方案2】:

    对于发现此页面的其他有相同问题的人,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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 2013-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多