4

У нас есть проект MVC 5.1 и используется маршрутизация атрибутов. Все работает отлично, за исключением страницы по умолчанию, на которой есть форма входа в систему.MVC Attribute Routing - Индекс контроллера по умолчанию с GET и POST

[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) 

форма отображается с помощью ГЭТ хорошо, но на POST мы получаем ...

Ошибка HTTP 405.0 - Method Not Allowed

Страница, которую вы ищете не может быть отображена потому что используется недействительный метод (HTTP-глагол).

Обычно маршрут по умолчанию будет обрабатывать как POST, так и GET.

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

Очевидно я пропускаю что-то здесь, на маршрутизации для поста на маршруте по умолчанию, как последующие сообщения на других страницах работают нормально.

Кто-нибудь это сделал?

Спасибо,

ответ

9

Ok кажется, все, что нужно сделать, это добавить

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

public ActionResult Index(String Username, String Password) 

Очевидное действительно! Длинный день!

 Смежные вопросы

  • Нет связанных вопросов^_^