Подтвердить что ты не робот

ContentResult против строки

Недавно меня спросили, зачем использовать ContentResult вместо возврата string. К сожалению, я не мог дать лучший ответ, чем: "Это лучшая практика".

У кого-нибудь есть лучший ответ?

Чтобы лучше понять вопрос. Какая разница?

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

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

Ответ 1

Если вы возвращаете что-то отличное от ActionResult, поведение по умолчанию состоит в том, чтобы создать ContentResult, завершая результат вызова ToString() на то, что вы вернули (или EmptyResult, если вы вернули null). Причины я могут явно возвращать ContentResult:

  • Это усиливает тот факт, что метод - это действие, а не обычный метод, поэтому разработчики с меньшей вероятностью допускают ошибки, такие как небрежное переименование.
  • Если в будущем вам нужно указать тип содержимого, вам не нужно будет менять подпись метода.
  • Он не скрывает вызов ToString(). Это не имеет значения, если вы возвращаете string, но возврат сложного типа может привести к неожиданным результатам.

Ответ 2

Вы не можете вернуть строку для метода, который возвращает ActionResult, поэтому вы можете использовать ContentResult для возврата простой строки, например:

public ContentResult Hello()
{
    return Content("hello world!");
}

ContentResult по умолчанию возвращает тип text/plain. Если вам понадобится только вернуть строку, то вы должны использовать метод для возврата строки

Ответ 3

Два основных преимущества:

  • Вы можете указать кодировку содержимого через свойство ContentEncoding
  • Вы можете указать тип содержимого (т.е. Text/html) через свойство ContentType

Кроме того, если вы хотите быть OO-чистого об этом, ContentResult, вместе со всем ActionResult производных классы следует команде, обеспечивая ExecuteResult команды для трубопровода MVC для запуска.

Ответ 4

Возврат ContentResult помогает защитить ваше приложение.

Например, если ваше приложение позволяет вводить данные от пользователей, злоумышленник может попытаться проанализировать текст javascript. Это предотвратит выполнение javascript в вашем приложении

Ответ 5

Одно из различий, которое я знаю:

Результат возврата контента без кавычек, если вы хотите.

Строка возвращает результат в котировках пометки все время.

Ответ 6

Еще одно отличие заключается в том, что Content content может возвращать другой контентный результат. Как строка, HTML, JavaScript результат и т.д.

Но строка возвращает только строковый результат.