MVC HttpContext.Response.Write()vs Content()

时间:2016-01-04 20:42:47

标签: asp.net-mvc

我已经看到这两种方式将xml作为客户端响应发送。

选项1:

var context = System.Web.HttpContext.Current;
            context.Response.Clear();
            context.Response.Write(sw.ToString());
            context.Response.ContentType = "text/xml";
            context.Response.End();

选项2:

return Content(sw.ToString(), "text/xml");

选项2更方便,但是在性能,安全性等方面有哪些优势?哪一个是首选(最佳实践)?

1 个答案:

答案 0 :(得分:7)

选项2的巨大优势在于您可以单独测试此控制器操作,因为它不依赖于可怕的HttpContext.Current静态属性。此外,它是实现此类功能的更多MVCish方式。在ASP.NET MVC中,C代表Controller,控制器具有返回ActionResult的Actions。因此ContentResult只是ActionResult的一个具体实现,您可以从Controller Action返回。

顺便说一下,你知道每次ASP.NET开发人员在他的应用程序中使用HttpContext.Current时,小猫会死吗?所以你可以完全忘记选项1.这不存在。我甚至不会将此称为。这是对人类的犯罪。