JQUERY对Controller Action的调用:String如果包含'space'字符,则截断参数

时间:2011-07-21 05:56:51

标签: asp.net-mvc

我有一个视图,它接受2个字符串参数和2个日期值。用户点击搜索按钮,他们将过滤输出到屏幕。这一切都非常有效,直到用户输入带有空格的字符串。即他们可以搜索“废物”而不是“废油”。

有趣的是,在后者中,在调用之前,Javascript的参数是可以的。但是在输入控制器代码时,它会在客户端形成“废油”而变成“浪费”。发生这种情况时,其他参数将设置为NULL以使系统崩溃。

我尝试用“#”字符替换空格(如果存在),然后剥离并放回控制器端的''。这是一个凌乱的软糖,似乎只能使用一个参数。

对于此参数数据丢失必须有一个简单的解释,任何评论都非常赞赏

不确定是否需要代码示例,但无论如何它都有帮助:

我的控制器标题:

    public ActionResult IndexSearch(int? page, string searchText,string searchTextSite,string  StartDate,string EndDate)
    {

我的HTML Javascript:

    function Search(sSearchText,sSite) {
        sSearchText = sSearchText.toString().replace(" ", "#");
        sSite = sSite.toString().replace(" ", "#");
        debugger;
        alert($("#AbsolutePath").val() + "Waste.mvc/IndexSearch?searchText=" + sSearchText + "&searchTextSite=" + sSite + "&StartDate=" + $('#StartDate').val() + "&EndDate=" + $('#EndDate').val());
        $("#ResultsList").load($("#AbsolutePath").val() + "Waste.mvc/IndexSearch?searchText=" + sSearchText + "&searchTextSite=" + sSite + "&StartDate=" + $('#StartDate').val() + "&EndDate=" + $('#EndDate').val(),
            function() {
                $('#LoadingGif').empty();
            });

        $('#LoadingGif').empty().html('<img src="' + $("#AbsolutePath").val() + 'Content/images/ajax-loader.gif" alt="Loading image" />');
    }

1 个答案:

答案 0 :(得分:4)

发送AJAX请求时,您不是对参数进行URL编码,因为在构建URL时使用字符串连接。您可以使用以下技术来获得正确编码的值:

var url = $('#AbsolutePath').val() + 'Waste.mvc/IndexSearch';

var data = {
    searchText: sSearchText,
    searchTextSite: sSite ,
    StartDate: $('#StartDate').val(),
    EndDate: $('#EndDate').val()
};

$('#ResultsList').load(url, data, function() {
    $('#LoadingGif').empty();
});

现在,您将在服务器上获得正确的值。