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

112

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

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

   return View(RealView);
}

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

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

Ответы:

228

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

 return new EmptyResult();
Archil
источник
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, которые вы можете вернуть.

Nipuna
источник
8

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

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

   return View(RealView);
Мухаммад Адил Захид
источник
16
вернуть новый EmptyResult (); - предпочтительный подход
RickAndMSFT