通过ajax请求将对象传递给控制器

时间:2012-01-14 17:28:27

标签: c# ajax asp.net-mvc asp.net-mvc-3

我已填充对象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。如何在我的情况下传递这个对象?感谢

3 个答案:

答案 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;

我希望这会有所帮助: - )