Reading text/xml into a ASP.MVC Controller

前端 未结 1 1345
醉话见心
醉话见心 2021-01-02 20:25

How do I read text/xml into an action on a ASP.MVC Controller?

I have a web application that may receive POSTed Xml from two different sources so the contents of the

相关标签:
1条回答
  • 2021-01-02 21:10

    You could read it from the request stream:

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

    and to cleanup this action you could write a custom model binder for a XDocument:

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

    which you would register in Application_Start:

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

    and finally:

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

    which is obviously cleaner.

    0 讨论(0)
提交回复
热议问题