如何将文本/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/