2012-01-14 147 views
0

我已经填充了对象SearchHomeModel并希望通过ajax请求将此对象传递给控制器​​。我的控制器的原型如下:通过ajax请求将对象传递给控制器​​

public ActionResult DataTableUserList(SearchHomeModel search, int iDisplayStart, int iDisplayLength, string sEcho) 

,我Concat的它的URL字符串:

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

(然后通过这个链接直接调用Ajax)

,当我在调试器中调用DataTableUserList看我看到iDisplayStart有价值,但搜索为空。如何在我的情况下通过这个对象?谢谢

+0

看一看这个[链接] [1] [1]:HTTP: //stackoverflow.com/questions/5980389/proper-way-to-use-ajax-post-in-jquery-to-pass-model-from-strongly-typed-mvc3-vie – Anwar 2012-01-14 17:38:51

+0

也在这里http:// stackoverflow。 com/questions/4120212/mvc-ajax-json-post-to-controller-action-method – 2012-01-14 17:49:43

回答

1

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

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

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

谢谢你的变种,b但它不适合我的具体情况(我必须传递比表单更多的数据) – John 2012-01-16 16:44:50

+0

也可以,页面可以没有

John 2012-01-16 17:43:35

+0

然后,您可以通过查询字符串将项目传递给服务器 – Shyju 2012-01-16 17:47:34

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模型绑定就做好了这样的想你。

+0

为什么它可能在搜索对象内? – John 2012-01-16 17:39:36

0

尝试这样做,而不是:

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

我希望这有助于:-)

+0

忍不住:( – John 2012-01-16 16:43:41

相关问题