В моем контроллере asp.net-mvc я принимаю несколько значений полей формы и из них создаю строку, понятную библиотеке Lucene.
Затем я хочу перенаправить метод get, который будет показывать результаты в зависимости от этой строки lucene.
Строка lucene находится в шаблоне {fieldName1: value1 fieldName2: value2 ...}
my Global.asax содержит следующую запись для цели перенаправления:
routes.MapRoute(
"AdvancedSearch",
"AdvancedSearch.mvc/{displayType}/luceneString",
new { controller = "Search", action = "AdvancedSearch",
displayType = "chip", luceneString = "" }
);
Итак, мой контроллер ловит сообщение, создает luceneString и выполняет следующее:
return RedirectToRoute("AdvancedSearch", new
{
Controller = "Search",
action = "AdvancedSearch",
displayType = "chip",
queryString = Url.Encode("company:test name:testname")
});
Это дает мне 500: плохой запрос.
Даже с одним параметром это не работает. Даже с ":" это не работает.
Я попробовал:
- AdvancedSearch.mvc / чип / компания% 3Atest + имя% 3AtestName
- AdvancedSearch.mvc / чип / компания: тест + название: АСМАП
- AdvancedSearch.mvc / чип / компания: тест
- AdvancedSearch.mvc / чип / фирма% 3Atest
Это работает, только если я изменил этот URL-адрес, чтобы взять queryString в формате
AdvancedSearch.mvc/chip?q=company%3Atest+name%3AtestName
Что я должен сделать, чтобы получить правильное кодирование, не прибегая к "? Q ="
Если мне нужно использовать строку запроса, как я могу определить такую вещь в таблице маршрутов? Как я собираюсь вызвать переадресацию на него?