xml - 将文本/xml 读入 ASP.MVC Controller

标签 xml asp.net-mvc controller action

如何将文本/xml 读取到 ASP.MVC Controller 上的操作中?

我有一个 Web 应用程序可能会从两个不同的来源接收 POSTed Xml,因此 Xml 的内容可能不同。

我希望我的 Controller 上的默认操作能够读取 Xml,但是我正在努力了解如何首先将 Xml 放入操作中。

如果 Xml 是一致的,我可以使用模型绑定(bind)器,但这里不可能。

最佳答案

您可以从请求流中读取它:

[HttpPost]
public ActionResult Foo()
{
    using (var reader = new StreamReader(Request.InputStream))
    {
        string xml = reader.ReadToEnd();
        // process the XML
        ...
    }
}

要清理此操作,您可以为 XDocument 编写自定义模型联编程序:

public class XDocumentModeBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        return XDocument.Load(controllerContext.HttpContext.Request.InputStream);
    }
}

您将在 Application_Start 中注册:

ModelBinders.Binders.Add(typeof(XDocument), new XDocumentModeBinder());

最后:

[HttpPost]
public ActionResult Foo(XDocument doc)
{
    // process the XML
    ...
}

这显然更干净。

关于xml - 将文本/xml 读入 ASP.MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574171/

相关文章:

xml - HXT——什么是 "deep"?

android - 以编程方式在 Fragment 中扩充 XML

asp.net-mvc - ASP.NET MVC 单元测试重定向结果

java - Android MVC 设计模式

javascript - replaceWith on XML 问题

java - Apache FOP AFP 到 XML 的转换

jquery - Controller 操作 View 中未加载 CSS 和 Js

asp.net-mvc - 需要 MVC 中错误的原因

angularjs - 在 Angular.JS 中找不到指令所需的 Controller

Codeigniter 从 Controller 调用 Controller