Asp.net mvc MVC MapRoute未使用所需参数进行布线

Asp.net mvc MVC MapRoute未使用所需参数进行布线,asp.net-mvc,maproute,Asp.net Mvc,Maproute,我希望我的MVC应用程序的URL如下: www.site.com/Bob 这将反过来“重定向”到Home/Details/Bob 我已设置以下MapRoute: routes.MapRoute( _ Nothing, _ "{personName}", _ New With {.controller = "Home", .action = "Details", .personName = ""}, _ New With {.result = New NameConstraint()} _

我希望我的MVC应用程序的URL如下:

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,否则返回false,这将导致它转到第二个(默认)映射路由

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代码,但提供的参数为nothing

例如。 函数详细信息(ByVal id为字符串)作为ActionResult Dim viewModel作为新的XViewModel(id) 返回视图(视图模型) 端函数

id的值设置为nothing,而不是预期的Bob

有什么想法吗?

试试这个:

 New With {.controller = "Home", _
.action = "Details", _
.personName = UrlParameter.Optional}, 
在地图路线中


PS:幸运的是,我的名字不在家……

www.site.com的URL也可以,但仍然不适用于www.site.com/Bob的场景。