Pur*_*ome 21 asp.net-mvc routes acceptverbs http-verbs
如果我已经使用[AcceptVerbs(..)]属性修饰了我的动作方法,我是否必须在路线定义中注册HttpVerb约束(当我注册路线时)?
例如.我有这个.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formCollection)
{ .. }
Run Code Online (Sandbox Code Playgroud)
我是否需要将此添加到引用此操作的路由中,作为约束?
Haa*_*ked 33
两者之间的区别如下:让我们假设有Create
问题的方法是在HomeController
.
使用该AcceptVerbs
属性不会影响路由.它实际上是动作调用者使用的东西.它允许你做的是在控制器上有两个动作方法,每个动作方法具有相同的名称,每个方法都响应不同的HTTP方法.
public ActionResult Create(int id) { .. }
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formCollection) { .. }
Run Code Online (Sandbox Code Playgroud)
因此,当请求/home/create
进入时,路由将匹配并将请求移交给控制器的调用者.然后,调用者通过查看AcceptVerbs
属性来调用正确的方法.
使用HttpMethodConstraint
in routing将使路由本身与请求不匹配.因此,当POST请求进入时/home/create
,将不会调用任何操作方法,因为该路由与请求不匹配.但是,另一条路线可能会匹配该请求.
这里重叠的部分原因是路由是ASP.NET 3.5 SP1的一个特性,并不是特定于MVC.MVC使用Routing,但Dynamic也使用Routing,我们计划将路由与ASP.NET Web Forms集成.
归档时间: |
|
查看次数: |
27492 次 |
最近记录: |