2012-01-14 120 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

相關問題