MVC Ajax 以 JSON 对象作为参数的 GET 方法
MVC Ajax GET method with JSON object as parameter
我正在尝试向发送 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);
}
});
这是服务器端的class:
public class TestingClass
{
public int Id { get; set; }
public string Name { get; set; }
}
这里是控制器动作:
[HttpGet]
public ActionResult Edit(TestingClass testingClass)
{
return PartialView("_ScheduledEvent", new ScheduledEventVM());
}
发生的事情是,即使在点击操作时对象不为空,Id 和 Name 都为空。
如果我将方法从 GET 更改为 POST,则对象会正确到达操作,但随后我会收到 RequiredValidationToken 错误。而且由于我实际上没有带有要使用的令牌的表单,所以我真的别无选择。
有没有办法使用 GET 或者我真的需要使用 POST.
在此先感谢您的帮助。
由于您的方法显示为 Edit
,这意味着它正在更改服务器的状态。希望在数据库中进行更新操作。
就 RequiredValidation Token
错误而言,我认为您在谈论 AntiForgeryToken
。您可以通过删除 post 请求中的 [ValidateAntiForgeryToken]
属性来避免这种情况,或者您可以使用辅助方法从客户端提供相同的令牌。
如果您在视图中写入 Html.AntiForgeryToken()
,它将在 html 中创建一个名为 __RequestVerificationToken
的隐藏字段。您可以获取此值并将其与 ajax 请求的数据和 header 一起推送。这样做之后,您的问题就会消失。
我正在尝试向发送 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);
}
});
这是服务器端的class:
public class TestingClass
{
public int Id { get; set; }
public string Name { get; set; }
}
这里是控制器动作:
[HttpGet]
public ActionResult Edit(TestingClass testingClass)
{
return PartialView("_ScheduledEvent", new ScheduledEventVM());
}
发生的事情是,即使在点击操作时对象不为空,Id 和 Name 都为空。
如果我将方法从 GET 更改为 POST,则对象会正确到达操作,但随后我会收到 RequiredValidationToken 错误。而且由于我实际上没有带有要使用的令牌的表单,所以我真的别无选择。
有没有办法使用 GET 或者我真的需要使用 POST.
在此先感谢您的帮助。
由于您的方法显示为 Edit
,这意味着它正在更改服务器的状态。希望在数据库中进行更新操作。
就 RequiredValidation Token
错误而言,我认为您在谈论 AntiForgeryToken
。您可以通过删除 post 请求中的 [ValidateAntiForgeryToken]
属性来避免这种情况,或者您可以使用辅助方法从客户端提供相同的令牌。
如果您在视图中写入 Html.AntiForgeryToken()
,它将在 html 中创建一个名为 __RequestVerificationToken
的隐藏字段。您可以获取此值并将其与 ajax 请求的数据和 header 一起推送。这样做之后,您的问题就会消失。