Chump Award!
Ответ - Маршрутизация.
Если присмотреться к Fiddler, я на самом деле отправлял запрос POST
на /article/comment
, поэтому я проверил свою маршрутизацию ... как я пропустил это, я не знаю:
routes.MapRoute("Article-Create", "article/create", new { controller = "Article", action = "Create" });
routes.MapRoute("Article-Edit", "article/edit/{slug}", new { controller = "Article", action = "Edit" });
routes.MapRoute("Article-Delete", "article/delete/{slug}", new { controller = "Article", action = "Delete" });
routes.MapRoute("Article", "article/{slug}", new { controller = "Article", action = "Details" });
routes.MapRoute("Articles", "articles", new { controller = "Article", action = "Index" });
Не существует явного маршрута для действия Комментарий. - это универсальный маршрут REST-ish для получения статьи (article/{slug}
). Таким образом, комментарий POST обрабатывался им до перехода по маршруту по умолчанию ...
Мое конкретное решение (мне нравится явная маршрутизация - даже когда это доставляет мне неприятности) заключалось в добавлении маршрута для комментариев, как раз для общего шаблона article/{slug}
:
routes.MapRoute("Article-Comment", "article/comment", new { controller = "Article", action = "Comment" });
Проблема решена. Неловко.