我有以下剃刀代码:
oauth_verifier
直到今天,这已经产生了这个HTML(我想要的):
@using (Html.BeginForm("Login", "Account", FormMethod.Post,...
但最近它开始输出这个HTML:
<form action="/Account/Login" method="post" ...
这可能是什么原因?我没有更改视图或控制器中的任何代码,但它突然开始输出不同的HTML。
答案 0 :(得分:2)
MVC按照注册顺序匹配路由,第一场比赛总是获胜。很可能你已经在之前添加了另一条路由,你想要匹配的路由匹配controller=Account
和action=Login
(通过基于约定或属性路由)。
// Your form will always match this route because it uses the
// same controller and action values, as a result it can never
// match your Default route.
routes.MapRoute(
name: "UnintendedMatch",
url: "form",
defaults: new { controller = "Account", action = "Login" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);