Javascript 如何将值从下拉项传递到URL?

Javascript 如何将值从下拉项传递到URL?,javascript,asp.net-mvc,asp.net-mvc-3,Javascript,Asp.net Mvc,Asp.net Mvc 3,我再次问这个问题…因为我没有得到正确的答案。。。 我得到的答案是不正确的 我正在开发MVC应用程序,我正在使用razor语法。我试图从下拉列表值中获取所选项目,并将其传递给控制器方法 但是我犯了一个错误 $("#btnForword").click(function(){ d = document.getElementById("HODList").value; var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApp

我再次问这个问题…因为我没有得到正确的答案。。。 我得到的答案是不正确的

我正在开发MVC应用程序,我正在使用razor语法。我试图从下拉列表值中获取所选项目,并将其传递给控制器方法

但是我犯了一个错误

$("#btnForword").click(function(){
    d =  document.getElementById("HODList").value;

    var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice", new { paymentAdviceId = "idValue" , nHOD = "d" }))";
    url2 = url2.replace("idValue",'@Model.Id');
    url2 = url2.replace("d",'@d');

    $.ajax({
        url: url2, type: "POST", success: function (data) {
            $("#btnForword").css("display","none");

        }
    });
    return false;
});
我认为这一行的错误

   url2 = url2.replace("d",'@d');
问题解决了问题解决了

变量“D”中的问题是“D”中的“是”

当我在控制台窗口中看到它时,我使用Google chrome的inspect元素属性进行了检查。。。。 当我点击按钮时,我可以看到下面的字符串

  http://localhost:54255/PaymentAdvice/SendPaymentAdviceForApproval?paymentAdviceId=304&nHO8=D

jquery-1.7.1.min.js:4
请看上面链接中的最后一个字符,它不应该是“=D”的,不是吗

我使用了下面的代码…它工作得非常好

$("#btnForword").click(function(){

            var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice", new { paymentAdviceId = "idValue" , nHOD = "HODId" }))";
            url2 = url2.replace("idValue",'@Model.Id');
            url2 = url2.replace("HODId",$('#HODList').val());


            $.ajax({
                url: url2, type: "POST", success: function (data) {
                    $("#btnForword").css("display","none");

                }
            });
            return false;
        });

这是Jquery中的一个bug吗

是的。问题是js replace函数用@d变量替换url2字符串中包含的每个“d”字符!!!
您需要将“d”标识符替换为在url字符串中不会出现两次(或更多)的标识符。此外,我认为直接使用javascript而不是Razor助手创建url更好。您可以在一行代码而不是三行代码中完成此操作。问候

是的。问题是js replace函数用@d变量替换url2字符串中包含的每个“d”字符!!!
您需要将“d”标识符替换为在url字符串中不会出现两次(或更多)的标识符。此外,我认为直接使用javascript而不是Razor助手创建url更好。您可以在一行代码而不是三行代码中完成此操作。问候

变量d不是可以用“@”调用的服务器变量,而是javascript中设置的客户端变量,因此它应该类似于用户:

$("#btnForword").click(function(){
    d =  document.getElementById("HODList").value;

    var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice", new { paymentAdviceId = Model.Id , nHOD = "d" }))";
    url2 = url2.replace("d",d);

    $.ajax({
        url: url2, type: "POST", success: function (data) {
            $("#btnForword").css("display","none");

        }
    });
    return false;
});

(并且可以在Url.Action方法中直接调用“@Model.Id”。

您的变量d不是可以用“@”调用的服务器变量,而是javascript中设置的客户端变量,因此它应该类似于用户:

$("#btnForword").click(function(){
    d =  document.getElementById("HODList").value;

    var url2 = "@Html.Raw(Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice", new { paymentAdviceId = Model.Id , nHOD = "d" }))";
    url2 = url2.replace("d",d);

    $.ajax({
        url: url2, type: "POST", success: function (data) {
            $("#btnForword").css("display","none");

        }
    });
    return false;
});

(并且可以在Url.Action方法中直接调用“@Model.Id”。

的副本。“我再次问这个问题……因为我没有得到正确的答案……我得到的答案是不正确的。”-不要这样做,改进你的问题。重复。“我再次问这个问题……因为我没有得到正确的答案……我得到的答案是不正确的。”-不要这样做,改进你的问题。是的,你是对的……我应该读你的答案,但我不。。。我浪费我的一天。。。。谢谢…是的,你是对的…我应该读你的答案,但我不。。。我浪费我的一天。。。。谢谢