我正在尝试使用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-form-urlencoded'd数据:
authTicket%5Busername%5D=testingu
&authTicket%5Bpassword%5D=testingp
我想在我的行动中我总是可以拥有“用户名”和“密码”属性,但这对我来说似乎不对。任何帮助将不胜感激。
答案 0 :(得分:0)
尝试将您的操作签名更改为:
Function MyAction(ByVal username As string, password as string, ByVal dateRange As String) As ActionResult