#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();