@ Url.ACtion()中不接受的变量参数

时间:2015-04-17 08:31:47

标签: javascript jquery ajax asp.net-mvc-4

我在@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。请帮我如何将变量传递给参数。

3 个答案:

答案 0 :(得分:3)

您无法将JavaScript变量传递给Url.Action,因为它在服务器端执行。进一步Url.Action函数将呈现一个字符串。

但是,您可以使用带有静态值的生成网址,并将其替换为您的输入。

//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;

答案 1 :(得分:1)

在你的情况下,我建议只写出你想要的链接,因为Razor代码在服务器端运行,所以它不会更新你想要的值。 如何将代码更改为:

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

答案 2 :(得分: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;
    });
});