ajax使用防伪令牌调用mvc控制器和json对象给我错误500

时间:2017-03-12 06:07:30

标签: jquery json ajax asp.net-mvc

我正在尝试通过ajax调用发送防伪令牌和json对象

这是我的ajax调用方法

    $("button#submit-btn").on("click", function (e) {
       e.preventDefault();
       //var valid = $("form#sh-post-form").valid();

       var modell = { PlaceId: 1 };
       var token = $('input[name=__RequestVerificationToken]').val();

       $.ajax({
           contentType: 'application/json; charset=utf-8',
           dataType: "json",
           type: "POST",
           url: "/Post/SaveSharePost",
           data: { __RequestVerificationToken: token, model: JSON.stringify(modell) }
    });

这是我的控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult SaveSharePost(SharePostVM model, string retunrUrl = null)
    {
        if (!ModelState.IsValid)
            return View(model);
        return View(model);
    }

当我尝试发送ajax调用时,它会给我内部错误500,并且错误消息显示“所需的防伪表单字段__RequestVerificationToken不存在”

我该如何解决?

谢谢你们

1 个答案:

答案 0 :(得分:0)

您应该将伪造令牌添加到模型中,例如:

model.__RequestVerificationToken=token

$.ajax({
       contentType: 'application/json; charset=utf-8',
       dataType: "json",
       type: "POST",
       url: "/Post/SaveSharePost",
       data: {model: JSON.stringify(modell) }
});