2011-11-02 178 views
0

讓自己有問題,開始在MVC3路由問題...未找到資源 - 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並試圖路由調試

現在說有不匹配!但低於它說,它目前的請求匹配......

enter image description here

回答

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")} 
) 
+0

更改和錯誤仍然存​​在......我假設'_me'是因爲'Me'是VB中的一個關鍵字,我只需單擊create controller並將其命名爲我。 – jondavidjohn

+0

更改了代碼以反映仍然出錯的建議。 – jondavidjohn

+0

@jondavidjohn,在你的路線中使用'.controller =「我」而不是'.controller =「MeController」'。你似乎編輯了你最初的問題。 –

2

您需要在控制器名稱_.controller = "_me"

+0

改變了這一切,同一個問題的http:// cl.ly/0C0I2y0z1W3y3L0k1014 – jondavidjohn

+0

嘗試[route debugger](http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx)。 – SLaks

+0

所以它說定義的路由匹配當前的請求,但它也說沒有匹配:/ http://cl.ly/1y3u0O152o2k14281U2u – jondavidjohn

0

添加Public到你的動作方法。

您還需要通過JsonRequestBehavior.AllowGet

+0

傳遞它在哪裏?還是爲了什麼? – jondavidjohn

+1

致'Json(...)'。 – SLaks

+0

在完成所有建議的編輯後,將控制器代碼更新爲當前,並具有相同的錯誤。謝謝,順便說一句。 – jondavidjohn