使用JSON对象作为参数

时间:2015-11-12 17:57:08

标签: json ajax model-view-controller getmethod

我正在尝试向发送Json对象作为参数的操作发出Ajax请求。

以下是Jquery的代码:

var jsonObject = {
    "Id": 33,
    "Name": "TEST"
};

$.ajax({
    type: "GET",
    url: rootPath + "ScheduledEvents/Edit/",
    data: JSON.stringify(jsonObject),
    /*contentType: "application/json; charset=utf-8",*/
    dataType: "json",
    success: function (data) {
        $("#defaultModalRightEventContent").html(data);
        $("#defaultModalRightEvent").modal("show");
    },
    error: function (request, status, error) {
        alert(request.responseText);
    }
});

这是服务器端的类:

public class TestingClass
{
    public int Id { get; set; }
    public string Name { get; set; }
}

这是控制器动作:

[HttpGet]
public ActionResult Edit(TestingClass testingClass)
{
    return PartialView("_ScheduledEvent", new ScheduledEventVM());
}

发生的事情是,即使在点击操作时对象不为null,Id和Name也为空。

如果我将方法从GET更改为POST,则对象正确到达操作,但随后我收到RequiredValidationToken错误。而且由于我实际上没有使用令牌的表单,我真的没有选择。

有没有办法使用GET,或者我真的需要使用POST。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

由于您的方法读取Edit,这意味着它正在更改服务器的状态。希望在数据库中进行更新操作 至于RequiredValidation Token错误,我认为你在谈论AntiForgeryToken。您可以通过删除帖子请求中的[ValidateAntiForgeryToken]属性来避免这种情况,也可以使用辅助方法从客户端提供相同的令牌。
如果您在视图中编写Html.AntiForgeryToken(),则会在html中创建名为__RequestVerificationToken的隐藏字段。您可以获取此值,并将其与ajax请求的数据和标头一起推送。这样做之后,你的问题就会消失。