1

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

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

但我收到错误。

$("#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 的检查元素属性进行了检查。当我单击按钮时,我可以看到以下方式形成的字符串

  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 中的错误吗?

4

2 回答 2

1

您的变量 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”)。

于 2013-05-27T11:37:23.263 回答
0

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

于 2013-05-27T11:34:32.633 回答