Разница между ними заключается в следующем: предположим, что рассматриваемый метод Create
находится на HomeController
.
Использование атрибута AcceptVerbs
не влияет на маршрутизацию. На самом деле это то, что используется инициатором действия. Это позволяет вам иметь 2 метода действия на контроллере с одинаковым именем, каждый из которых отвечает на другой метод HTTP.
public ActionResult Create(int id) { .. }
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formCollection) { .. }
Таким образом, когда поступает запрос на /home/create
, маршрут будет соответствовать и передать запрос вызывающей стороне контроллера. Затем вызывающий вызывает правильный метод, просматривая атрибут AcceptVerbs
.
Использование HttpMethodConstraint
в маршрутизации сделает так, что сам маршрут не будет соответствовать запросу. Поэтому, когда приходит запрос POST для /home/create
, ни один метод действия не будет вызван, потому что этот маршрут не будет соответствовать запросу. Однако возможно, что другой маршрут соответствует этому запросу.
Одной из причин совпадения здесь является то, что маршрутизация — это функция ASP.NET 3.5 SP1, а не специфичная для MVC. MVC использует маршрутизацию, но маршрутизация также используется динамическими данными, и мы планируем интегрировать маршрутизацию с веб-формами ASP.NET.
person
Haacked
schedule
12.11.2008