2015-04-17 94 views
1

我在@Url.Action()中傳遞了兩個變量參數。但它不接受可變參數,而是接受常數值。我的代碼是這樣的變量參數在@ Url.ACtion中不接受()

$(document).ready(function() { 
    $(".print").click(function() { 
     var id = $(#id).val(); 
     var dept = $(#dept).val(); 
     var url = "@Html.Raw(@Url.Action("ActionResultname", "ControllerName", new {sid= id , sdept=dept }))"; 
     window.location.href = url; 
    }); 
}); 

這裏id & sid不接受作爲一種價值,其採取的字符串。但是,如果我通過像

var url = "@Html.Raw(@Url.Action("ActionResultname", "ControllerName", new {sid= 10, sdept=30}))"; 

其正確地接受作爲sid=10 & sdept=30。請幫助我如何將一個變量傳遞給參數。

+0

剃刀代碼解析的服務器上** **其發送到視圖。它不會因爲你定義了一些JavaScript變量而得到更新 –

回答

3

您無法將JavaScript變量傳遞到Url.Action,因爲它在服務器端執行。進一步Url.Action函數會呈現一個字符串。

但是,您可以使用帶有靜態值的生成URL並將其替換爲您的輸入。

//Render Url with -1 and -2 value 
var url = '@Url.Action("ActionResultname", "ControllerName", new { sid = -1, sdept= -2})'; 
url = url.replace(-1, id); //replace -1 with id 
url = url.replace(-2, dept); //replace -2 with dept 

window.location.href = url; 
+0

Downvoter,我錯過了什麼嗎? – Satpal

+0

Hi @Satpal,這種方法可以用來傳遞一個Json對象作爲參數嗎?如果是這樣,你可以擴展如何,我現在一直在嘗試幾個小時,並且我總是在服務器上初始化對象,但使用null參數。謝謝。 – Juan

+0

事實上,試圖傳遞兩個整數不適用於我,第二個總是作爲錯誤傳遞...任何想法爲什麼? – Juan

1

在你的情況我建議只是寫出你想要的鏈接蟶代碼運行服務器端,這樣就不會得到你想要的值更新。 你怎麼樣改變你的代碼:

$(document).ready(function() { 
    $(".print").click(function() { 
     var id = $(#id).val(); 
     var dept = $(#dept).val(); 
     var url = "/ControllerName/ActionResultname?sid=" + id + "&sdept=" +dept; 
     window.location.href = url; 
    }); 
}); 
1

這不可能,你需要通過客戶端追加查詢 前嘗試這種

$(document).ready(function() { 
    $(".print").click(function() { 
     var id = $('#id').val(); 
     var dept = $('#dept').val(); 
     var url = '@Url.Action("ActionResultname", "ControllerName")'; 
     url += "?sid= " + id + "&sdept=" + dept; 
     window.location.href = url; 
    }); 
});