You can read it from the request stream:
[HttpPost] public ActionResult Foo() { using (var reader = new StreamReader(Request.InputStream)) { string xml = reader.ReadToEnd();
and to clear this action, you can write a custom mediator for 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) {
which is clearly cleaner.
Darin Dimitrov
source share