最近有人问我为什么使用ContentResult而不是返回string.不幸的是,我不能给出比"这是最好的实践"更好的答案了.

有没有人有更好的答案?

为了更好地理解这个问题.有什么关系呢?

public ActionResult Foo(){
    return Content("Some string");
}

public string Bar(){
    return "Some string";
}

推荐答案

如果您返回的不是ActionResult,那么默认行为是创建一个ContentResult,用于包装调用ToString()的结果,不管返回什么(如果返回null,则返回EmptyResult).我能想到的明确返回ContentResult的原因:

  • 它强化了这样一个事实,即该方法是一个动作,而不是常规方法,因此开发人员不太可能犯像随意重命名这样的错误.
  • 如果将来需要指定内容类型,则无需更改方法签名.
  • 它没有隐藏ToString()电话.如果返回string,这并不重要,但是返回复杂类型可能会产生意想不到的结果.

Asp.net相关问答推荐

如何在 ASP.NET WebForms 中实现 TDD

Server.Transfer 在执行子请求时抛出错误.如何解决?

.NET 站点如何隐藏其文件的 .aspx 扩展名?

IIS Request.UserHostAddress 返回 IPV6 (::1),即使禁用了 IPV6

静态字段与会话变量

ASP.NET Core 1.0 ConfigurationBuilder().AddJsonFile("appsettings.json");找不到文件

是否可以访问位于另一个项目中的 MVC 视图?

解析 JSON 响应的最简单方法

如何计算/查找给定日期的周数?

使用 Elmah 处理 Web 服务中的异常

没有回发的按钮?

ASP.NET MVC 5 中的路由可选参数

如何使用 WebRequest 发布数据并从网页获取响应

ASP.NET MVC 2.0 JsonRequestBehavior 全局设置

在 ASP.NET 中使用 MasterPages 时使用 JQuery 的正确方法?

Azure 网站 301 重定向 - 我应该把它放在哪里?

当用户在文本框中按 Enter 键时执行按钮单击事件

如何清除 System.Runtime.Caching.MemoryCache

ASP.Net 哪个用户帐户在 IIS 7 上运行 Web 服务?

如何修复 ASP.NET 错误文件 'nnn.aspx' 尚未预编译,无法请求.?