ASP.NET MVC возвращает пустое представление


112

Каков наиболее естественный способ вернуть пустой ActionResult (для дочернего действия)?

public ActionResult TestAction(bool returnValue)
{
   if (!returnValue)
     return View(EmptyView);

   return View(RealView);
}

Один из вариантов, который я вижу, - создать пустое представление и ссылаться на него в EmptyView ... но может быть, есть какой-либо встроенный параметр?


Разве View () не может возвращать только текст? Если да, отправьте пустую строку.
Энди Хант

Ответы:


228

вернуть экземпляр класса EmptyResult

 return new EmptyResult();

1
В действии, которое возвращается EmptyResult, это то же самое, что и действие return null?
Робин Мабен

1
@RobinMaben: Нет, null не вернет объект из метода. Однако EmptyResult будет.
cederlof

1
Я бы вернулся, nullпотому что внутри он будет использовать internal EmptyResult.Instanceто , к чему вы не можете получить доступ сами. Это позволяет избежать повторного создания экземпляра объекта без состояния.
Йоррит Шипперс

18

Вы можете вернуть EmptyResult, чтобы вернуть пустое представление.

public ActionResult Empty()
{
    return new EmptyResult();
}

Вы также можете просто вернуться null. ASP.NET обнаружит возвращаемый тип nullи вернет за вас EmptyResult .

public ActionResult Empty()
{
    return null;
}

См. Документацию MSDN для ActionResult для получения списка типов ActionResult, которые вы можете вернуть.


8

если вы не хотите ничего возвращать, вы можете сделать что-то вроде

if (!returnValue)
     return Content("");

   return View(RealView);

16
вернуть новый EmptyResult (); - предпочтительный подход
RickAndMSFT
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.