繁体   English   中英

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

[英]How to pass the value to URL from dropdown item?

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

我正在开发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 element属性进行了检查。...单击该按钮时,我可以看到以下列方式形成的字符串

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

您的变量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;
});

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM