在ASP.net MVC2中返回XML数据的最佳实践
本文关键字:数据 最佳 XML 返回 ASP net MVC2 | 更新日期: 2023-09-27 18:00:24
我想知道从MVC2应用程序创建XML输出并将其返回到客户端的最佳方式是什么(可能还使用XSD方案验证)?
我知道我不能直接从控制器返回它,也不能作为变量传递给视图等。我的应用程序的很大一部分是在不同的XML源、模式和格式之间进行转换,所以我从一开始就设置它非常重要。
但是有更好的方法吗?
提前感谢!
您可以编写一个自定义ActionResult,它将把视图模型序列化为XML。字里行间的东西:
public class XmlResult : ActionResult
{
private readonly object _model;
public XmlResult(object model)
{
_model = model;
}
public override void ExecuteResult(ControllerContext context)
{
if (_model != null)
{
var response = context.HttpContext.Response;
var serializer = new XmlSerializer(_model.GetType());
response.ContentType = "text/xml";
serializer.Serialize(response.OutputStream, _model);
}
}
}
然后:
public ActionResult Foo()
{
SomeViewModel model = ...
return new XmlResult(model);
}
请随意执行ExecuteResult
方法中可能需要的任何XSD验证等。
正如@Robert Koritnik在评论部分所建议的那样,你也可以写一个扩展方法:
public static class ControllerExtensions
{
public static ActionResult Xml(this ControllerBase controller, object model)
{
return new XmlResult(model);
}
}
然后:
public ActionResult Foo()
{
SomeViewModel model = ...
return this.Xml(model);
}
话虽如此,如果您发现自己需要交换大量XML,您可能会考虑使用WCF。如果您需要POX,请考虑WCF REST.