Как упоминалось ранее @HereticMonkey, обратный вызов AJAX предназначен для того, чтобы оставаться на той же странице, загружая частичные представления.Если вы хотите перенаправить на другую страницу из сценария на стороне клиента, необходимо использовать location.href
, назначенный с предполагаемой строкой URL, без использования AJAX вообще:
$(document).ready(function () {
$('#btn_Search').click(function (e) {
var category = $("#ddl_Category option:selected").text();
var location = $('#txtSource').val();
window.location.href = '@Url.Action("GlobalSearch", "Classified")' + '?searchcategory=' + category + '&Location=' + location;
});
});
Другой способ сделать перенаправление - использовать обычныйотправьте форму (с POST
методом) и используйте RedirectToAction
, содержащий параметры маршрута из серверных переменных:
// POST controller action example
string category = "somecategory";
string location = "somelocation";
return RedirectToAction("GlobalSearch", "Classified", new { searchcategory = category, Location = location });
Но если вы хотите загрузить частичное представление на той же странице с помощью AJAX, просто замените return View()
с return PartialView()
:
public ActionResult GlobalSearch(string searchcategory, string Location)
{
//Connect to db and fetch data in form of List
return PartialView(list);
}
Затем используйте функцию html()
для частичного отображения содержимого в целевом элементе HTML:
$('#btn_Search').click(function (e) {
var category = $("#ddl_Category option:selected").text();
var location = $('#txtSource').val();
$.ajax({
url: "/Classified/GlobalSearch",
type: 'GET',
data: { searchcategory: category, Location: location },
success: function (data) {
alert("Hi");
$('#targetElement').html(data); // show partial view content to target element
},
// other stuff
});
});