【问题标题】:pass object to controller via ajax request通过ajax请求将对象传递给控制器
【发布时间】:2012-01-14 17:28:27
【问题描述】:

我已填充对象 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 有值,但搜索为空。在我的情况下如何传递这个对象?谢谢

【问题讨论】:

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


【解决方案1】:

为什么不序列化表单并发送到您的操作方法?如果您已将模型与表单元素绑定,您将获得一个有效模型,其中填充了值。

$.post("/User/DataTableUserList", $("form").serialize(), function (data) {

                     //do what you want with the response from your action method
});

【讨论】:

  • 感谢您的变体,但这不适合我的具体案例(我必须传递比表单更多的数据)
  • 另外,页面可以没有
  • 然后你可以通过查询字符串将项目传递给服务器
【解决方案2】:

你可以试试...

$.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 模型绑定器能够以这种方式为您完成工作。

【讨论】:

  • 为什么它可能在搜索对象内?
【解决方案3】:

尝试这样做:

url = "/User/DataTableUserList?search.FirstName=" + Model.SearchKeys.FirstName + 
        "&search.LastName=" + Model.SearchKeys.LastName + 
        "&search.Title=" + Model.SearchKeys.Title + 
        "&search.Company=" + Model.SearchKeys.Company;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-28
    • 2017-04-20
    • 1970-01-01
    • 2020-01-27
    • 2021-09-05
    • 2016-04-08
    • 1970-01-01
    • 2017-12-27
    相关资源
    最近更新 更多