为web表单使用新的(ish)url重写功能,但是我试图将参数声明为可选参数时遇到问题。在webforms中使用url路由的可选URL参数
这里是场景。我有一个搜索功能,它接受两个参数,SKU和名称。理想情况下,我希望此搜索功能的URL为/ products/search/skuSearchString/nameSearchString。我还有各种管理页面,需要映射到诸如/ products/management /或/ products/summary /之类的东西。换句话说,URL中的最后两个参数需要是可选的 - 可能有一个搜索字符串,或者两个,或者没有。
这是怎么了,我宣布我的虚拟网址:
Friend Const _VIRTUALURL As String = "products/{action}/{sku}/{*product}"
,并添加以下缺省值:
Me.Defaults = New Web.Routing.RouteValueDictionary(New With {.sku = "/"})
Me.Defaults = New Web.Routing.RouteValueDictionary(New With {.product = "/"})
我有两个问题与此设置。最紧迫的是该网址似乎期望sku参数。因此,/ products/summary /无法找到,但/ products/summary/anyTextAtAll /会映射到正确的页面。无论默认设置为“/”还是“”,您都会得到相同的结果。我如何确保Sku和产品参数都是可选的?
第二个更值得关注。理想情况下,我希望url能够判断它是否有产品搜索字符串或网址搜索字符串。做到这一点的显而易见的方法是将其中一个或另一个默认设置为我可以接受并忽略的值,但是有没有更好的方法来处理它?