在webforms中使用url路由的可选URL参数

时间:2010-02-19 10:46:53

标签: webforms url-routing

使用Web表单的新(ish)url重写功能,但是我在尝试将参数声明为可选时遇到了麻烦。

这是场景。我有一个搜索功能,它接受两个参数,sku和name。理想情况下,我希望此搜索功能的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 = "/"})

这个设置有两个问题。最紧迫的是url似乎期望sku参数。因此,无法找到/ products / summary /但/ products / summary / anyTextAtAll /映射到正确的页面。无论默认设置为“/”还是“”,都会得到相同的结果。如何确保sku和产品参数都是可选的?

第二个更令人感兴趣。理想情况下,我希望网址能够判断它是否有产品搜索字符串或网址搜索字符串。显而易见的方法是将一个或另一个默认设置为我可以选择并忽略的值,但是有一种更简洁的方法来处理它吗?

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解这个问题,但我对你到目前为止所展示的内容有一些评论:

您设置默认值的方式似乎不正确。您首先要设置一个默认值字典,其值为“sku”。然后,您使用“product”的值替换默认值字典。

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

尝试类似:

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

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

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