我希望我的 MVC 应用程序的 URL 类似于:
www.site.com/鲍勃
这又会“重定向”到 Home/Details/Bob。
我已经设置了以下 MapRoute:
routes.MapRoute( _
Nothing, _
"{personName}", _
New With {.controller = "Home", .action = "Details", .personName = ""}, _
New With {.result = New NameConstraint()} _
)
NameConstraint 是一个 IRoutingConstraint,用于检查名称是否存在。如果它返回 true,否则返回 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 id As String) As ActionResult Dim viewModel As New XViewModel(id) Return View(viewModel) End Function
id 的值设置为空,而不是预期的 Bob。
有任何想法吗?