MVC属性路由 - 使用GET和POST的默认控制器索引

时间:2014-02-07 15:25:21

标签: c# asp.net-mvc-5 asp.net-mvc-routing asp.net-mvc-5.1 attributerouting

我们有一个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 }
     );

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

有人这样做过吗?

谢谢,

1 个答案:

答案 0 :(得分:9)

好吧我似乎只需要添加

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

 public ActionResult Index(String Username, String Password)

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