【发布时间】:2011-01-18 17:38:09
【问题描述】:
正在使用 web 表单的新(ish)url 重写功能,但我在尝试将参数声明为可选时遇到了麻烦。
这是场景。我有一个搜索功能,它接受两个参数,sku 和 name。理想情况下,我希望此搜索功能的 URL 为 /products/search/skuSearchString/nameSearchString。我还有各种管理页面需要映射到 /products/management/ 或 /products/summary/ 等内容。换句话说,URL 中的最后两个参数必须是可选的 - 可能有一个搜索字符串,也可能有两个,或者没有。
这就是我声明我的虚拟 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 = "/"})
这个设置有两个问题。最紧迫的是 url 似乎需要一个 sku 参数。因此, /products/summary/ 无法找到,但 /products/summary/anyTextAtAll/ 映射到正确的页面。无论默认设置为“/”还是“”,您都会得到相同的结果。如何确保 sku 和产品参数都是可选的?
第二个更有趣。理想情况下,我希望 url 能够判断它是否有产品搜索字符串或 url 搜索字符串。这样做的明显方法是将一个或另一个默认设置为我可以选择并忽略的值,但是有没有更简洁的处理方法?
【问题讨论】:
标签: webforms url-routing