6

我们有一个 MVC 5.1 项目并且正在使用属性路由。除了上面有登录表单的默认页面外,一切正常。

[RoutePrefix("Home")] 
public class HomeController : BaseController
{
    [Route("~/")]
    [Route]
    [Route("Index")]
    [HttpGet]
    public ActionResult Index()
    {
        var model = new LoginViewModel();

        return View(model);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Index(String Username, String Password)

表单通过 GET 很好地显示,但在 POST 时我们得到......

HTTP 错误 405.0 - 方法不允许

您正在查找的页面无法显示,因为正在使用无效的方法(HTTP 动词)。

通常默认路由会处理 POST 和 GET 都很好。

   routes.MapRoute(
        name: "Default",
       url: "{controller}/{action}/{id}/{dealerId}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
     );

显然,我在默认路由上的帖子路由上遗漏了一些东西,因为其他页面上的后续帖子工作正常。

有人做过吗?

谢谢,

4

1 回答 1

12

好吧,看来我所要做的就是添加

 [Route("~/")]
 [Route]
 [Route("Index")]
 [HttpPost]
 [ValidateAntiForgeryToken]

 public ActionResult Index(String Username, String Password)

真的很明显!漫长的一天!

于 2014-02-07T15:41:28.050 回答