C# 将参数从ajax成功响应传递到Url操作方法

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

我有一个对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
            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';