Как отправить Nothing в качестве значения маршрута в ASP MVC - PullRequest
0 голосов
/ 10 июня 2010

У меня есть маршрут с несколькими дополнительными параметрами.Это возможные условия поиска в разных полях.Так, например, если у меня есть поля key, itemtype и text, то я имею в 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 имеют ненулевое (и непустое) значение и по мере необходимости добавляют поисковые запросы в запрос db.

Однако возможно ли отправить нулевое значение, например, дляКлюч, но все еще отправить значение для текста?Если да, то как выглядит URL?(Admin.aspx / Search // 0 / Foo не работает :))

Я знаю, что могу справиться с этим, используя массив параметров, но подумал, возможно ли это, используя описанный маршрут?Конечно, я мог бы определить какое-то другое значение как эквивалентное нулю (например, пробел /% 20), но есть ли способ отправить нулевое значение в URL?Я подозреваю, что нет, но думал, что увижу, знает ли кто-нибудь об этом.

Я использую ASP MVC 2 для этого проекта.

1 Ответ

1 голос
/ 10 июня 2010

В вашем маршруте используйте 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 } _
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...