我已填充对象SearchHomeModel,并希望通过ajax请求将此对象传递给控制器。我的控制器是以下原型:
public ActionResult DataTableUserList(SearchHomeModel search, int iDisplayStart, int iDisplayLength, string sEcho)
我为它连接了url字符串:
url = "/User/DataTableUserList?SearchHomeModel.FirstName=" + Model.SearchKeys.FirstName +
"&SearchHomeModel.LastName=" + Model.SearchKeys.LastName +
"&SearchHomeModel.Title=" + Model.SearchKeys.Title +
"&SearchHomeModel.Company=" + Model.SearchKeys.Company;
(然后将此url传递给ajax调用)
当我在调试器中看到调用DataTableUserList时,我看到iDisplayStart有值,但搜索为null。如何在我的情况下传递这个对象?感谢
答案 0 :(得分:1)
为什么不序列化表单并发送到您的操作方法?如果您已使用表单元素绑定模型,则会获得一个有效值的模型。
$.post("/User/DataTableUserList", $("form").serialize(), function (data) {
//do what you want with the response from your action method
});
答案 1 :(得分:1)
您可以尝试类似......
$.ajax({
url: '/User/DataTableUserList',
data: {
FirstName : '@Model.SearchKeys.FirstName',
LastName : '@Model.SearchKeys.LastName',
Title: '@Model.SearchKeys.Title',
Company: '@Model.SearchKeys.Company'
},
success: function(result){
// Do Something with Result
}
});
希望MVC Model Binder能够以这种方式为您完成工作。
答案 2 :(得分:0)
尝试改为:
url = "/User/DataTableUserList?search.FirstName=" + Model.SearchKeys.FirstName +
"&search.LastName=" + Model.SearchKeys.LastName +
"&search.Title=" + Model.SearchKeys.Title +
"&search.Company=" + Model.SearchKeys.Company;
我希望这会有所帮助: - )