2010-05-08 68 views
0

我正在嘗試使用jQuery爲MVC控制器操作執行$ .post()。這裏的jQuery的電話:將對象傳遞給控制器​​操作

var _authTicket = { username: 'testingu', password: 'testingp' }; 

function DoPost() {  
    var inputObj = { authTicket: _authTicket, dateRange: 'ThisWeek' };    
    $.post('/MyController/MyAction', inputObj, PostResult); 
} 

function PostResult(data) { 
    alert(JSON.stringify(data)); 
} 

這裏的控制器動作:

<HttpPost()> _ 
    Function MyAction(ByVal authTicket As AuthTicket, ByVal dateRange As String) As ActionResult 
     Dim u = ValidateUser(authTicket) 
     If u Is Nothing Then Throw New Exception("User not valid") 

     ' etc.. 

    End Function 

的問題是,MyAction的 「authTicket」 參數是所有空。第二個「dateRange」參數填充得很好。我非常肯定,這個問題源於jQuery將數據轉換爲鍵/值對以POST到動作。 MVC不能理解格式,至少當它是具有它自己的屬性的對象時。

該jQuery是轉換爲名稱/值對的格式是這樣的:

authTicket[username] = "testingu" 
authTicket[password] = "testingp" 

而這又被做成X WWW的形式-urlencoded'd數據:

authTicket%5Busername%5D=testingu 
&authTicket%5Bpassword%5D=testingp 

我我猜可以在我的動作中始終擁有「用戶名」和「密碼」屬性,但這對我來說似乎是錯誤的。任何幫助,將不勝感激。

+0

什麼是AuthTicket類是什麼樣子? – 2010-05-08 02:18:28

+0

這就像客戶端版本 - 包含用戶名和密碼的屬性。 – 2010-05-10 13:01:09

回答

0

試着改變你的行動簽名:

Function MyAction(ByVal username As string, password as string, ByVal dateRange As String) As ActionResult 
+0

這就是我現在正在做的事情,但它似乎很奇怪/錯誤,我不能只傳遞一個整個對象。 – 2010-05-10 13:01:52

相關問題