我有一个带有几个可选参数的路线。这些是不同领域的可能搜索术语。所以,例如,如果我有字段键,项类型和文本,那么我在global.asax:
routes.MapRoute( _
"Search", _
"Admin.aspx/Search/{Key}/{ItemType}/{Text}", _
New With {.controller = "Admin", .action = "Search" .Key = Nothing, .ItemType = Nothing, .Text = Nothing} _
)
我的操作采用可选参数:
Function Search(Optional ByVal Key As String = Nothing, _
Optional ByVal ItemType As Integer = 0, _
Optional ByVal Text As String = Nothing, _
Optional ByVal OtherText As String = Nothing)
然后检查Key和Text字符串是否具有非null(和非空)值,并根据需要将搜索项添加到db请求中。
但是,是否可以为例如Key发送空值但仍然发送Text的值?如果是这样,URL是什么样的? (Admin.aspx / Search // 0 / Foo不起作用:))
我知道我可以使用参数数组来处理这个问题,但是想知道这是否可以使用所描述的路由类型?我当然可以将一些其他值定义为等效于null(例如,空格/%20)但是有没有办法在URL中发送空值?我不怀疑,但我想我是否知道有人知道。
我正在为这个项目使用ASP MVC 2.
答案 0 :(得分:1)
在您的路线中,使用UrlParameter.Optional
作为默认值:
routes.MapRoute( _
"Search", _
"Admin.aspx/Search/{Key}/{ItemType}/{Text}", _
New With { .controller = "Admin", .action = "Search", _
.Key = UrlParameter.Optional, .ItemType = UrlParameter.Optional, _
.Text = UrlParameter.Optional } _
)