2015-04-17 79 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; 
    }); 
});