2013-05-27 41 views
1

我再次問這個問題....因爲我沒有得到正確的答案... 我得到的答案是不正確的。如何將值從下拉項傳遞給URL?

我正在開發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'。

我檢查檢查使用谷歌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中的一個bug嗎?

+0

重複的[如何將分頁下拉值傳遞給MVC中的URL?](http://stackoverflow.com/questions/16769607/how-to-pass-the-seelcted-dropdown-value-to-url-在-MVC)。 _「我再次問這個問題......因爲我沒有得到正確的答案......我得到的答案是不正確的。」_ - 不這樣做,改善你的問題。 – CodeCaster

回答

0

是的。問題是,js replace函數用你的@d變量替換url2字符串中包含的每個「d」字符! 您需要將「d」標識符替換爲在url字符串中不出現兩次(或多次)的內容。另外,如果你直接使用javascript創建url而不是Razor helper,我認爲更好。你可以用一行代碼而不是三行來完成。問候。

+0

你是對的...我應該讀你的答案,但我不......我浪費我的一天....謝謝... – bnil

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

(和「@ Model.Id 「可以直接在Url.Action方法中調用)。

+0

問題解決了,請檢查更新的答案... – bnil