将XML数据发送到C#控制器

时间:2018-07-20 09:54:25

标签: c# ajax xml

我想将xml数据发送到c#控制器。

我的xml数据是:

var saveData = '<xml xmlns="http://www.w3.org/1999/xhtml"><block type="animal" id="xG;UTYXlRg!0Mf[hzwUY" deletable="false" x="601" y="32"><mutation animal="4"></mutation><field name="LEGS">4</field><value name="PIC"><block type="picture" id="Ur(^~L/jC/yu!u%f%I(Z" deletable="false"><mutation animal="4"></mutation></block></value><statement name="TRAITS"><block type="trait" id="u8)T)6wBbE^m.%=ILpEe" deletable="false"><mutation animal="4" trait="1"></mutation><next><block type="trait" id="H@d0NIKR1u0@@(t?7a6Dw" deletable="false"><mutation animal="4" trait="2"></mutation></block></next></block></statement></block><block type="animal" id="d@Q?[m;zlWRWA,5X5M/a" deletable="false" x="891" y="36"><mutation animal="1"></mutation><field name="LEGS">1</field><value name="PIC"><block type="picture" id="w!UiV*|:=y5n8`f@M!3j" deletable="false"><mutation animal="1"></mutation></block></value><statement name="TRAITS"><block type="trait" id="zQp:H!fm::@@aNFn`4eEd" deletable="false"><mutation animal="1" trait="1"></mutation><next><block type="trait" id="4wDt7k=~:}J[un#^rhal" deletable="false"><mutation animal="1" trait="2"></mutation></block></next></block></statement></block><block type="animal" id="i8kBocDwY3|Q5oy}#K/0" deletable="false" x="595" y="244"><mutation animal="2"></mutation><field name="LEGS">2</field><value name="PIC"><block type="picture" id="v6/SG@D#WfS*kGU?h4H@@" deletable="false"><mutation animal="2"></mutation></block></value><statement name="TRAITS"><block type="trait" id="C^+-{YCH;}19X6TuW=NW" deletable="false"><mutation animal="2" trait="2"></mutation><next><block type="trait" id="zuTZ?E^YtPgLV8Otz!W=" deletable="false"><mutation animal="2" trait="1"></mutation></block></next></block></statement></block><block type="animal" id="P)KN^:PPLG0*DYS==b_i" deletable="false" x="913" y="270"><mutation animal="3"></mutation><field name="LEGS">3</field><value name="PIC"><block type="picture" id="~kZ?pV,{zka*L6p^*K*j" deletable="false"><mutation animal="3"></mutation></block></value><statement name="TRAITS"><block type="trait" id="nLR]),jTS*m-.8*7(p|a" deletable="false"><mutation animal="3" trait="2"></mutation><next><block type="trait" id="*UtIP}fT=7@b19ssf{72" deletable="false"><mutation animal="3" trait="1"></mutation></block></next></block></statement></block></xml>'

我是这样发送的

 $.ajax({
        url: "../Home/XmlData",
         type: "POST",
         contentType: "text/xml",
         dataType: "xml",
         async: false,
         data: { "SaveData": saveData },
         success: function (result) {

         },
         error: function (e, jqxhr, settings, exception) {

         }
     })

但是我在控制器中获得了null

请帮助我

2 个答案:

答案 0 :(得分:1)

我认为这里的问题是您实际上是在发布 string 而不是XML。 也许试试这个:

$.ajax({
    type: "POST",
    url: "../Home/XmlData",
    data: saveData, 
    contentType: 'text/plain'
});

然后,您当然需要在控制器端解析XML,我认为您的控制器应该看起来像这样:

[HttpPost] 
public ActionResult XmlData([FromBody]string SaveData) 
{ 
    //...Do whatever is needed.
} 

否则,它将期望'saveData'字符串成为URL的一部分。

答案 1 :(得分:-1)

我知道了。

这样做,它将发布XML。

processData: false,
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ SaveData: saveData })