如何将选定的下拉列表值传递给MVC中的URL?

时间:2013-05-27 08:56:35

标签: asp.net-mvc asp.net-mvc-3

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

但我收到了错误。

The name 'd' does not exist in the current context

更新的代码是......

   $("#btnForword").click(function(){
    d = $('#HODList').val()
    alert(d);

    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;
});
  

问题已解决问题已解决

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

当我在控制台窗口看到它时,我使用了Google Chrome的inspect element属性进行了检查.... 当我点击按钮时,我可以看到以下面形成的字符串

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

2 个答案:

答案 0 :(得分:0)

试试这个

$(function(){

$("#btnForword").click(function(){
    var d =  $('#HODList').val();

    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;
   });
});
不要考虑更换" d"因为它也会影响你网址的其他部分。请尝试使用特定的占位符。 如果这不起作用...那么你能否请出示你的Action方法的签名?

你的控制器动作应该是这样的

[HttpPost]
public JsonResult SendPaymentAdviceForApproval(int paymentAdviceId, int nHOD)
{
   // Your existing logic here... 
}

干杯

答案 1 :(得分:0)

您应该使用data $.ajax属性将参数传递给控制器​​操作。

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

    // define url
    var url2 = 'Url.Action("SendPaymentAdviceForApproval", "PaymentAdvice")';
    //url2 = url2.replace("idValue",'@Model.Id');
    //url2 = url2.replace("d",'@d');

    $.ajax({
        url: url2, 
        type: "POST", 
        // add parameters in here...
        data: { paymentAdviceId : @Model.Id, nHOD : d }
        success: function (data) {
            $("#btnForword").css("display","none");
        }
    });

    return false;
});

你的控制器应该看起来:

public ActionResult SendPaymentAdviceForApproval(int paymentAdviceId, int nHOD){...}