Проблема с маршрутизацией ... Ресурс не найден - MVC3 - PullRequest
0 голосов
/ 02 ноября 2011

Проблемы с началом работы на 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

Ответы [ 3 ]

2 голосов
/ 02 ноября 2011

Вам необходимо включить _ в имя контроллера: .controller = "_me"

0 голосов
/ 03 ноября 2011
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 голосов
/ 02 ноября 2011

Добавьте Public к вашим методам действий.

Вам также нужно будет пройти JsonRequestBehavior.AllowGet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...