Изначально у этого демонстрационного приложения, над которым я работаю, была всего одна страница с простой формой для входа в систему
<form action="/Login/AuthenticateUser" method="post">
<label for="username_or_email">Username or email</label>
<input id="handle" name="handle" type="text" value="">
<label for="password">Password</label>
<input id="pass" name="pass" type="password" value="">
</form>
И 2 маршрута определены
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"User",
"{controller}/{handle}",
new { Controller = "User", action = "Index", handle = UrlParameter.Optional }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Post", action = "Index", id = UrlParameter.Optional }
);
}
Это работало без проблем, и к нему был привязан следующий метод контроллера
[HttpPost]
public ActionResult AuthenticateUser(FormCollection collection)
{
//some code here ...
return View("Index");
}
Позже было решено, что мне нужен маршрут для непосредственного просмотра информации о пользователях, поэтому я хотел что-то вроде http://localhost/User/handle
Итак, я создал маршрут и могу просматривать его без проблем. Но в следующий раз, когда я попытался войти в систему с оригинальной формой (см. Выше), она никогда не попадет на метод http post в моем контроллере (а вместо этого на метод http get «Index»). Также обратите внимание - после появления этого сообщения URL в браузере выглядит корректно, в этом случае отображается http://localhost/Login/AuthenticateUser.
Странное поведение, несомненно, связано с новым маршрутом. Также обратите внимание - у меня нет маршрута, определенного для этого метода аутентификации пользователя.
Каким образом я могу заставить их работать вместе? Кроме того, что вызвало это странное поведение? Не верен ли сам маршрут?
Заранее спасибо