У меня проблема при передаче значений в метод действия контроллера.
У меня есть такая карта маршрутов:
routes.MapRoute(
name: "VehicleAdvancedSearchResult",
url: "search-result/{searchTypeSlug}/{condition}/{makeSlug}/{modelName}/{modelExt}/{categorySlug}/{parishSlug}/{yearRange}/{priceRange}",
defaults: new
{
controller = "SearchResult",
action = "VehicleAdvanceSearch",
//SearchTypeSlug = UrlParameter.Optional
//Condition = UrlParameter.Optional,
//MakeSlug = UrlParameter.Optional,
//ModelName = UrlParameter.Optional,
//ModelExt = UrlParameter.Optional,
//CategorySlug = UrlParameter.Optional,
//ParishSlug = UrlParameter.Optional,
//YearRange = UrlParameter.Optional,
//PriceRange = UrlParameter.Optional
}
);
Я пытался с UrlParameter.Optional
, но это не сработало.
В представлении у меня есть форма, не определенная по умолчанию action
, но когда я нажимаю "Отправить", атрибут действия добавляется в нее с правильными значениями.
Проблема в том, что первое значение параметра всегда появляется в виде пустой строки при фактическом вызове метода контроллера.
Что я делаю не так?
Другая проблема заключается в том, что я хочу, чтобы метод действия вызывался, даже если URL частично завершен или даже не имеет параметров. В моем случае, если я наберу просто http://locahots:55904/search-result/
или http://locahots:55904/search-result/for-sale/
, то есть до тех пор, пока оно является частичным, я всегда получаю 404. Но я хочу, чтобы они перенаправляли на другую страницу, если это частичный URL.
Я уже сделал эту проверку в своем методе действия, но этот метод вообще не вызывается с частичным URL.
Это необходимо, поскольку Google сканирует URL-адреса отдельно для каждой структуры папок, чтобы проиндексировать их.
Как я могу предотвратить это?