Отредактировал вопрос, поскольку я обнаружил, что проблема не в бритве, а вместо этого в маршруте
У меня есть очень простая форма входа, но как-то,когда пользователь нажимает «Войти», страница переходит на страницу «Ошибка 404», и по какой-то причине она просто не попадает на контрольные точки контроллера.
@using (Html.BeginRouteForm("MyCustomRoute", new { controller = "login", action = "verify", FormMethod.Post }))
{
<fieldset class="clearfix">
<p><span style="float:none;color:black; font-size:20pt;"></span></p>
<p><span style="float:none;color:black; font-size:20pt;"></span></p>
<p><span class="fa fa-user"></span>@Html.TextBoxFor(m => m.UserName, new { @class = "form-control", placeholder = "Username", onkeydown = "convertTabtoEnter(this, event)", autofocus = "" })</p> <!-- JS because of IE support; better: placeholder="Username" -->
<p>
<span class="fa fa-lock"></span>@Html.PasswordFor(m => m.Password, new { @class = "form-control", placeholder = "Password", onkeyup = "convertTabtoEnter()" })
</p> <!-- JS because of IE support; better: placeholder="Password" -->
<div>
<span style="width:48%; text-align:left; display: inline-block;">
<a class="small-text" href="#">
@*Forgot
password?*@
</a>
</span>
<span style="width:50%; text-align:right; display: inline-block;"><input type="submit" value="Sign In"></span>
</div>
</fieldset>
<div class="clearfix"></div>
}
И внутри моего контроллера входа у меня есть простой ActionResult с именем «Подтвердить» с 2 параметрами.
[RoutePrefix("Login")]
public class LoginController : Controller
{
// GET: Login
public ActionResult Index()
{
return View();
}
[HttpPost]
[Route("Verify")] //Matches GET login/verify
public ActionResult Verify(string username, string password)
{...}
Что именно я здесь не так делаю?Это не похоже на ракетостроение.
Edit2: я заметил, что всякий раз, когда я изменяю RouteConfig.cs обратно на значение по умолчанию, он работает правильно.Итак, проблема не в тегах формы, а в маршрутизации.Поэтому я пытался добавить собственный маршрут, чтобы заставить это работать, используя этот пример: Использование Html.BeginForm () с пользовательскими маршрутами
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "TrailersOverview",
url: "{TrailersOverview}/{action}/{vendid}",
defaults: new { controller = "TrailersOverview", action = "Index", vendId = UrlParameter.Optional }
);
routes.MapRoute(
"MyCustomRoute", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "login", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
name: "Default",
url: "{*anything}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
}
}
Когда я удаляю маршрутыи я просто возвращаю все по умолчанию, контроллер получает удар.К сожалению, мне действительно нужны эти маршруты для остальной части приложения: (