【问题标题】:xml binding in asp.net coreasp.net核心中的xml绑定
【发布时间】:2019-04-08 12:59:27
【问题描述】:

我一直在尝试通过 jquery ajax 在 asp.net 核心方法中发送 XML。这是我的控制器方法:

[HttpPost]
public IActionResult Save([FromBody]string model)
{
     return Json(true);
}

以下是我的 jquery ajax 请求:

var encoder = new mxCodec();
var node = encoder.encode(graph.getModel());
var model = mxUtils.getPrettyXml(node);
mxUtils.popup(model, true);
    $.ajax({
        url: "/Graphs/Save/",
        contentType: "text/xml; charset=utf8",
        dataType:"xml",
        data: JSON.stringify(model),
        type: "POST",
        success: function (result) {
            console.log(result);
        }
});

这是示例 xml 文本:

"<mxGraphModel>\n  <root>\n    <mxCell id=\"0\"/>\n    <mxCell id=\"1\" parent=\"0\"/>\n  </root>\n</mxGraphModel>\n"

但是model参数总是显示为null。

【问题讨论】:

    标签: jquery ajax asp.net-core model-binding


    【解决方案1】:

    您的请求内容类型设置为“text/xml; charset=utf8”,但请求正文格式被“JSON.stringify(model)”设置为json,请尝试删除JSON.stringify并重试。

    【讨论】:

    • 不。我这样做了,但没有用。 $.ajax({ url: "/Graphs/Save/", contentType: "text/xml; charset=utf8", dataType: "xml", data: model, type: "POST", success: function (result) { console.log(result); } });
    【解决方案2】:

    对于FromBody,它会从请求体中读取请求,content-type应该是application/json,尝试用下面的代码做一个测试:

            var model = "<mxGraphModel>\n  <root>\n    <mxCell id=\"0\"/>\n    <mxCell id=\"1\" parent=\"0\"/>\n  </root>\n</mxGraphModel>\n";
        $.ajax({
            url: "https://localhost:44307/api/JsonInput/Save",
            contentType:"application/json",
            data: JSON.stringify(model),
            type: "POST",
            success: function (result) {
                console.log(result);
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-11
      • 2019-11-14
      • 2018-06-22
      • 2017-03-03
      • 1970-01-01
      • 2021-08-03
      • 2020-01-20
      • 2017-05-01
      相关资源
      最近更新 更多