Url.Action:网址的解决方法是否太长了?

时间:2014-03-31 15:41:21

标签: javascript asp.net-mvc

这是我的Javascript函数:

function myFunction() {
    var grid = $('#GridName').data('tGrid');
    var data = JSON.stringify(grid.data);

    var window = $('#Window').data('tWindow');
    window.content('<%= Resources.Global.Loading %>');
    window.contentUrl = '<%= Url.Action("MyMethod", "MyController") %>' + '?data=' + data;
    ...
}

获取网格数据,将其转换为字符串并将其作为参数发送给MyMethod。

不幸的是,数据是一个非常长的字符串,此功能不起作用。我试过发送子串,确实有一个字符数的截止点。

有没有办法解决这个限制,或采取不同的方式?

谢谢!

2 个答案:

答案 0 :(得分:0)

上述评论的副本:

您可以使用AJAX POST到该URL,然后在响应回调中,您可以:(1)捕获视图HTML,以及(2)尝试使用window.content(response);替换窗口HTML。

有许多在线使用AJAX的教程(本地或通过像jQuery这样的库),所以我将把它留给你作为练习。

为什么会这样?通过POST提交表单通常允许向服务器提交的数据多于您通过GET在URL中发送的数据(URL参数是GET请求的一部分,而POST则编码数据作为请求标题的一部分。)

答案 1 :(得分:0)

这就是诀窍:

function myFunction() {
    var grid = $('#Grid').data('tGrid');
    var data = JSON.stringify(grid.data);

    var window = $('#Window').data('tWindow');
    window.content('<%= Resources.Global.Loading %>');

    $.ajax({
        type: 'Post',
        cache: false,
        url: '<%= Url.Action("MyMethod", "MyController") %>',
        dataType: 'html',
        data: { data: data },
        success: function (e) {
            window.content(e);
        }
    });

    ...
    }