【问题标题】:Optional URL parameters with url routing in webforms网络表单中带有 url 路由的可选 URL 参数
【发布时间】: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


    【解决方案1】:

    我不确定我是否完全理解了这个问题,但我对您目前所展示的内容有一些了解:

    您设置默认值的方式似乎不正确。您首先使用“sku”的值设置默认值字典。然后,您将替换默认值字典为“产品”的值。

    “/”的默认值不太可能是您想要的。在这种情况下,听起来您只需要一个默认值“”(空字符串)。

    尝试类似:

    Me.Defaults = New Web.Routing.RouteValueDictionary(New With {
        .sku = "",
        .product = "" }) 
    

    我的 VB 技能比较弱,所以我展示的语法可能不完全正确。

    我认为如果你改变这两个,那么你应该很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 2011-04-11
      相关资源
      最近更新 更多