我有一个视图,它接受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" />');
}
答案 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();
});
现在,您将在服务器上获得正确的值。