У меня возникла странная проблема с проектом mvc (Visual Studio Premium 2013). Всякий раз, когда я делаю даже самое маленькое изменение в представлении .cshtml, я всегда получаю сообщение «Ошибка сервера в приложении '/'. Ресурс не может быть найден». Я должен несколько раз очистить и перестроить свой проект, чтобы он заработал. Но если после изменения (простой модификации в представлении .cshtml) я помещаю точку останова где-нибудь в коде, выполняемом в контроллере, когда это представление запрашивается браузером, тогда все работает нормально, без ошибок и изменение немедленно отражается в браузере. Поскольку я новичок в mvc (но не в .net asp.net, я исхожу из веб-форм), я пытаюсь понять некоторые ключевые концепции.
Я изменил маршрутизацию по умолчанию на:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Index", action = "GetIndexPage", id = UrlParameter.Optional }
);
Вы можете видеть, что я изменил имена по умолчанию: Home -> Index, Action Index -> GetIndexPage.
Я также обновил код в своем контроллере соответственно:
IndexController
GetIndexPage()
return View(...)
Как я уже сказал, это работает нормально в первый раз, или после нескольких решений очистки и сборки или точки останова внутри GetIndexPage ()
Используя встроенный отладчик браузера Chrome, я увидел это исключение:
HttpException: A public action method "Index" was not found on controller IndexController
at System....Controller.HandelUnknownAction(string actionname)
Почему он ищет индекс действия, когда в настройках по умолчанию я специально упомянул GetIndexPage?
override
защищенный методHandleUnknownAction
, установить точку останова и заглянуть в словарь маршрута контекста контроллера (ключи «контроллер» и «действие»), чтобы точно определить, где, по мнению MVC, он должен искать. - person Christopher Stevenson   schedule 03.08.2014@using (Html.BeginForm(new { ReturnUrl = ...
, где вы могли установитьReturnUrl
на неправильное значение? - person   schedule 03.08.2014