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

Ori*_*aev 2 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();
Run Code Online (Sandbox Code Playgroud)

选项2:

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

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

Dar*_*rov 7

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

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

  • 当然它已经消失了.谁想杀小猫?这应该从未在ASP.NET MVC中首先存在过. (3认同)