Могу ли я получить результат действия с именем «View»

#c# #asp.net-mvc #asp.net-mvc-2 #asp.net-mvc-3

#c# #asp.net-mvc #asp.net-mvc-2 #asp.net-mvc-3

Вопрос:

Код:

 public ActionResult View(string id)
{ 
   return View();
}
  

В настоящее время я получаю исключения stackoverflow, когда я делаю это.

Комментарии:

1. Я всегда хихикаю, когда вижу отчет об исключении stackoverflow на stackoverflow.com 😛

Ответ №1:

Вы должны получать предупреждение компилятора о том, что ваше определение View маскирует определение базового класса контроллера и что вам следует явно использовать new ключевое слово. Если вы измените свой код, чтобы сделать это вместо этого, он должен работать так, как вы хотели:

 return base.View();
  

Ответ №2:

Конечно, просто не вызывайте себя рекурсивно:

 public new ActionResult View()
{
    return base.View();
}
  

Ответ №3:

Обычно хорошей идеей является описательное название ваших представлений. Представление с именем View не говорит, что делает представление или какие данные оно, вероятно, будет использовать. Я бы настоятельно рекомендовал дать ему лучшее название.

Тем не менее, в данном случае вы рекурсивно вызываете себя, поэтому измените оператор return на

 return base.View();