一千萬個為什麽

搜索

將對象傳遞給Controller Action


我正在嘗試使用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));
}

這是控制器動作:

     _
    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-form-urlencoded'd數據:

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

我想我的行為中總是可以有“用戶名”和“密碼”屬性,但這對我來說似乎不對。任何幫助,將不勝感激。

最佳答案

嘗試將您的操作簽名更改為:

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

轉載註明原文: 將對象傳遞給Controller Action

猜你喜歡