让自己开始使用MVC3
尝试在Global.asax
routes.MapRoute( _
"MeGet", _
"me", _
New With {.controller = "MeController", .action = "Show"}, _
New With {.httpMethod = New HttpMethodConstraint("GET")}
)
routes.MapRoute( _
"MePut", _
"me", _
New With {.controller = "MeController", .action = "Update"}, _
New With {.httpMethod = New HttpMethodConstraint("PUT")}
)
我的控制器如下。
Public Class MeController
Inherits System.Web.Mvc.Controller
'
' GET: /me
Public Function Show() As ActionResult
Dim stuff = {"Hello", "World"}
Return Json(stuff, JsonRequestBehavior.AllowGet)
End Function
'
' PUT: /me
Public Function Update() As ActionResult
Return View()
End Function
End Class
我得到的只是......
无法找到资源。
没有堆栈跟踪。
以下建议
将控制器更改为_me
并尝试了路由调试器
现在它说 NO MATCH!但是在它下面说它与当前请求匹配......
答案 0 :(得分:2)
您需要在控制器名称中加入_
:.controller = "_me"
答案 1 :(得分:0)
将Public
添加到您的操作方法中。
您还需要传递JsonRequestBehavior.AllowGet
。
答案 2 :(得分:0)
Public Class _me
Inherits System.Web.Mvc.Controller
必须成为:
Public Class MeController
Inherits System.Web.Mvc.Controller
ASP.NET MVC约定中的指示控制器类名称后缀为Controller
。我不知道你为什么在你的控制器名称之前放一个_,这是违反约定的,但是如果你决定保留它,你也必须在路由定义中反映这一点。
同样在您的路线中替换:
.controller = "MeController"
使用:
.controller = "Me"
以便您的路线定义如下所示:
routes.MapRoute( _
"MeGet", _
"me", _
New With {.controller = "Me", .action = "Show"}, _
New With {.httpMethod = New HttpMethodConstraint("GET")}
)
routes.MapRoute( _
"MePut", _
"me", _
New With {.controller = "Me", .action = "Update"}, _
New With {.httpMethod = New HttpMethodConstraint("PUT")}
)