【问题标题】:MVC Razor submit data in XMLMVC Razor 以 XML 格式提交数据
【发布时间】:2013-06-13 15:24:18
【问题描述】:

这就是我再次使用 MVC Razor。 在网络上,我通过使用 JSON 的 AJAX 将数据从 JQuery 发送到控制器,反之亦然,看到了很多教程,但我找不到任何类似的 XML 示例。 任何示例、教程、常见问题解答?

【问题讨论】:

  • 所以您想将页面上的某些内容序列化为 XML,然后将其发送到控制器?
  • 看起来是的。是的,你说得对。

标签: jquery xml ajax asp.net-mvc-3 razor


【解决方案1】:

JSON 是常用的,因为它几乎与 MVC 结合(并且很好地集成)。但是,根据您的设置,您应该能够很好地处理 XML(只要您不介意它是传输层的字符串,然后使用 Javascript 或 C# 库在边界的任一侧管理它) .

要给出完整的工作流程,请从 GET 操作开始:

public ActionResult MyAction()
{
    MyObjWithXml model = new MyObjWithXml
    {
        // XML could be a serialized object or something form a data source
        xml = "<FOO><BAR>baz</BAR></FOO>";
    };
    return View(model); 
}

然后是视图:

@model MyObjWithXml
@using (html.BeginForm("MyAction", "MyController", Httpmethod.Post))
{
    // Model.xml = "<FOO><BAR>baz</BAR></FOO>"
    @Html.HiddenFor(x => x.xml)
    <input type="submit" value="Submit" />
}

现在让我们把它发回去(同样你也可以关闭 AJAX):

 [HttpPost]
 // may also need [AllowHtml]/[ValidateInput(false)] to allow XML characters
 public ActionResult MyAction(MyObjWithXml model)
 {
     if (ModelState.isValid)
     {
       // model.xml = "<FOO><BAR>baz</BAR></FOO>";
       // process and do what you need (maybe deserialize it back to whatever
       // you needed or save it off to a datasource
     }
     return View();
 }

就显示它(以不可编辑的容量)而言,您可以将其原始转储到页面(可能作为 text/xml 数据类型),或者在使用 jQuery 解析后使用它($.parseXML('@Html.Raw(Model.xml)');) -- 你的电话。

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2018-05-03
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 2019-06-16
    相关资源
    最近更新 更多