@Url.Action выбрал неправильное действие (AttributeRouting, asp.net mvc 5)

У меня есть контроллер, который имеет эти два метода действий:

Оба имеют одно и то же имя, но имеют разные параметры, один из них - HttpGet, другой - HttpPost.

public class TestController : Controller {

    [Route("Test/{id:int}/ActionName"), HttpGet]
    public ActionResult ActionName(int id) { ... }

    [Route("Test/ActionName"), HttpPost]
    public ActionResult ActionName(TestObject obj) { ... }
}

public class TestObject {
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
}

Когда я делаю @Url.Action("ActionName", new { id = 3 }) Я ожидаю, что будет выбрано действие HttpGet, но вместо этого будет действие HttpPost.

Я знаю, что если я установлю Order на 1 на первом маршруте и 2 на втором, он будет работать, как и ожидалось, но я хочу знать, почему он не был выбран в первую очередь.

0 ответов

Другие вопросы по тегам