为什么表单操作属性与相同的代码不同?

时间:2017-06-13 16:38:30

标签: c# asp.net-mvc razor

我有以下剃刀代码:

oauth_verifier

直到今天,这已经产生了这个HTML(我想要的):

@using (Html.BeginForm("Login", "Account", FormMethod.Post,...

但最近它开始输出这个HTML:

<form action="/Account/Login" method="post" ...

这可能是什么原因?我没有更改视图或控制器中的任何代码,但它突然开始输出不同的HTML。

1 个答案:

答案 0 :(得分:2)

MVC按照注册顺序匹配路由,第一场比赛总是获胜。很可能你已经在之前添加了另一条路由,你想要匹配的路由匹配controller=Accountaction=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 }
);