将text/xml读入ASP.MVC控制器

前端之家收集整理的这篇文章主要介绍了将text/xml读入ASP.MVC控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何将text / xml读入ASP.MVC控制器上的操作?

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

我希望我的控制器上的默认操作能够读取Xml但是我很难看到我如何能够首先将Xml放入操作中.

如果Xml是一致的,我可以使用Model Binder,但这不可能.

解决方法

您可以从请求流中读取它:
[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
    ...
}

这显然更清洁.

猜你在找的HTML相关文章