我有一个MVC 3应用程序正在使用jQuery AJAX来启动控制器操作以返回部分视图。
客户端代码:
function getCustomerList(searchCriteria) {
$.ajax({
url: 'Home/GetCustomerList',
type: 'POST',
data: '{searchString:"' + searchCriteria + '"}',
success: function (result) {
$("#customerTabBody").html(result);
}
});
};
控制器代码:
[HttpPost]
public ActionResult GetCustomerList(string searchString)
{
var custService = new CustomerViewModels();
var custListVM = custService.GetSearchList(searchString);
return PartialView("GetCustomerList", custListVM);
}
当我触发客户端jQuery时,我可以通过Firebug看到searchString正在发送并且显示格式正确。这是Firebug显示的帖子消息:
{searchString的: 'AR'}
并且Firebug能够正确解析JSON。如果我在控制器代码中放置一个断点并测试searchString参数的值是NULL。但是,如果我只是硬编码JSON:
function getCustomerList(searchCriteria) {
$.ajax({
url: 'Home/GetCustomerList',
type: 'POST',
data: {searchString:'ar'},
success: function (result) {
$("#customerTabBody").html(result);
}
});
};
它工作正常,控制器参数已正确填充。
我做错了什么,当我参数化我的JSON字符串时它会失败?
由于
答案 0 :(得分:1)
试试这样:
function getCustomerList(searchCriteria) {
$.ajax({
url: 'Home/GetCustomerList',
type: 'POST',
data: { searchString: searchCriteria },
success: function (result) {
$('#customerTabBody').html(result);
}
});
}
这将确保发送到控制器的数据正确进行URL编码。此外,您还没有显示调用此getCustomerList
函数的方式/位置,但如果单击某个锚点或按钮,请确保您也取消默认操作。