Я пытаюсь отправить форму на ActionMethod
с настраиваемым маршрутом, который включает параметры.
[Route("Prop/{location}/{category}/{p}")]
public IActionResult Search(string location, string category, int p, string q)
{
var vm = new ReloadVm();
// rest of the code
return View(vm);
}
Если я использую Html.BeginForm
, я получаю 404
, поскольку он попытается загрузить https://localhost:44326/prop/search
, а не пользовательский маршрут. Раньше я использовал window.location.href
, но мне сказали, что это плохо работает с Google, а теперь Chrome отменяет запросы URL-адресов этим вызовом Javascript
, поэтому он не кажется стабильным.
Как лучше всего справиться с этим?
Кроме того, этот метод действия имеет около 15 параметров, и, чтобы url
оставался чистым, я хотел бы передать обратно только те параметры, которые не равны нулю или 0 , поэтому я бы получил url
, например /Prop/London/Job/1?q=whatever&tt=222
.
Обновление - window.location.href
работает, кнопка «триггер» должна была быть определена как type=button
, иначе она отменит JS
запрос и рассматривать его как отправку.
Все еще ищем лучший способ сделать это без JS