C# 将参数从ajax成功响应传递到Url操作方法
我有一个对Api的ajax调用,该Api将数据添加到数据库中,我希望success函数使用action方法调用控制器,以使用从Api调用的响应中收到的不同参数。我该怎么做 Ajax调用C# 将参数从ajax成功响应传递到Url操作方法,c#,jquery,ajax,asp.net-mvc,razor,C#,Jquery,Ajax,Asp.net Mvc,Razor,我有一个对Api的ajax调用,该Api将数据添加到数据库中,我希望success函数使用action方法调用控制器,以使用从Api调用的响应中收到的不同参数。我该怎么做 Ajax调用 $.ajax({ //Url should contain the method you want to run url: "/api/ApiTest", //Method will be one of the REST API verb
$.ajax({
//Url should contain the method you want to run
url: "/api/ApiTest",
//Method will be one of the REST API verb
method: "POST",
//These are all the parameters to be passed to method for rest api
data:viewModel,
dataType: 'json',
success: function (data) {
var bookingIDParam = data.Booking.BookingID
window.location.href = '@Url.Action("BookingInfo", "Booking", new { BookingID = bookingIDParam })';
},
error: function () {
alert("Error occured!!")
}
});
我收到一个错误“当前上下文中不存在名称'bookingIDParam'
如何调用不同的控制器/使用响应中的参数和操作方法转到url。稍后尝试设置一些伪字符串来替换它:
var url_redirect = '@Url.Action("BookingInfo", "Booking", new { BookingID = "00replace00" })';
$.ajax({
....
success: function (data) {
url_redirect = url_redirect.replace("00replace00", data.Booking.BookingID );
window.location.href =url_redirect ;
},
你不能;至少不能这样做。所有服务器端的事情都发生在最后一页交付给客户端之前。AJAX调用发生在这之后,AJAX响应也发生在这之后。你必须使用javascript调整URL。你可以做类似于
new{BookingID=“REPLACEME”}
在razor代码中,然后当您得到AJAX响应时,将结果URL中的REPLACEME替换为AJAX响应中的值。如果不清楚,请查看浏览器中的那一行。您将看到window.location.href='some real URL';
。