asp.net-mvc – ASP.NET MVC AcceptVerbs和注册路由

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC AcceptVerbs和注册路由前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我已经用[AcceptVerbs(..)]属性装饰了我的动作方法,我必须在路由定义(注册路由时)注册HttpVerb约束?

例如。我有这个。@H_502_3@

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formCollection)
{ .. }

我需要添加到引用此操作的路由作为约束吗?@H_502_3@

解决方法

两者之间的区别如下:我们假设有关的Create方法是在HomeController上。

使用AcceptVerbs属性不影响路由。它实际上是动作调用者使用的东西。它允许您做的是在控制器上具有两个与每个响应不同的HTTP方法相同的名称的操作方法。@H_502_3@

public ActionResult Create(int id) { .. }

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formCollection) { .. }

因此,当/ home / create的请求进入时,路由将匹配并将请求切换到控制器的调用者。然后,调用者通过查看AcceptVerbs属性调用正确的方法。@H_502_3@

在路由中使用HttpMethodConstraint将使路由本身与请求不匹配。所以当POST请求进入/ home / create时,既不会调用action方法,因为该路由与请求不匹配。有可能另外一条路线会匹配那个请求。@H_502_3@

这里重叠的部分原因是路由是ASP.NET 3.5 SP1的一个功能,并不是MVC特有的。 MVC使用路由,但动态数据也使用路由,我们计划将路由与ASP.NET Web窗体集成。@H_502_3@

猜你在找的asp.Net相关文章