MVC MapRoute не маршрутизируется с обязательным параметром
Я хочу, чтобы URL-адрес моего приложения MVC был таким:
www.site.com/Bob
Который, в свою очередь, "перенаправил бы" на Home/Details/Bob.
Я установил следующий MapRoute:
routes.MapRoute( _
Nothing, _
"{personName}", _
New With {.controller = "Home", .action = "Details", .personName = ""}, _
New With {.result = New NameConstraint()} _
)
NameConstraint - это IRoutingConstraint, который проверяет, существует ли имя. Если он возвращает true, else возвращает false, что приводит к переходу ко второму (и по умолчанию) MapRoute.
Public Class ListingConstraint
Implements IRouteConstraint
Public Function Match(ByVal httpContext As System.Web.HttpContextBase, ByVal route As System.Web.Routing.Route, ByVal parameterName As String, ByVal values As System.Web.Routing.RouteValueDictionary, ByVal routeDirection As System.Web.Routing.RouteDirection) As Boolean Implements System.Web.Routing.IRouteConstraint.Match
Dim personName As String
personName = CStr(values("personName"))
If listingName = "Bob" Then 'akin to checking the database for a valid name
Return True
Else
Return False
End If
End Function
End Class
Проблема возникает, когда я звоню: www.site.com/Bob. Он правильно маршрутизирует код Home / Details в контроллере, но предоставленный параметр - ничто.
Например, подробности функции (идентификатор ByVal в виде строки) как ActionResult Dim viewModel как новый XViewModel(id) Возвращаемое представление (viewModel) End Function
Значение id установлено в ничего, а не Боб, как ожидалось.
Есть идеи?
1 ответ
Попробуй это:
New With {.controller = "Home", _
.action = "Details", _
.personName = UrlParameter.Optional},
в вашем карте
PS: К счастью, меня не зовут Дом...