0

我正在尝试将 jQuery Mobile 中的 changePage 函数绑定到以 int 数组作为参数的控制器/操作。

动作定义如下:

[HttpPost]
public ActionResult MessageHistory(int[] ids)

如果我使用 jQuery ajax,例如:

$.ajax({
    type: "POST",
    url: "MessageHistory",
    contentType: "application/json",
    data: JSON.stringify({ ids: messagesIds }),
    success: function (messages) {
        alert('eh!');
    }
});

参数绑定良好,数组不为空。

但是如果我使用 jQuery Mobile changePage 像:

$.mobile.changePage("MessageHistory", {
    type: "post",
    data: JSON.stringify({ ids: messageIds })
});

数组为空。

寻找请求中的差异,我发现问题可能是请求的内容类型,但我无法在 changePage 函数中更改它。

我也尝试使用自定义 ModelBinder,但该值也为 null。

我能做些什么?

谢谢!

4

1 回答 1

1

好的,我找到了一个我不太喜欢但解决问题的简单解决方案。

将动作定义更改为:

public ActionResult MessageHistory(string strIds)

同样在将字符串转换为 int 数组的 Action 中:

int[] ids = JsonConvert.DeserializeObject<int[]>(strIds);

最后 changePage 调用:

$.mobile.changePage("MessageHistory", {
    type: "post",
    data: { strIds: JSON.stringify(messages) }
});
于 2013-04-22T18:15:04.377 回答