防伪令牌和数据发送,但控制器方法数据为空

时间:2019-03-19 02:14:27

标签: javascript ajax asp.net-mvc

我尝试通过下面的html页面代码向控制器发送antiforgerytoken和yeniTest填充了一些数据(不为null)。

 var token = document.querySelector('input[name="__RequestVerificationToken"]').value;

    $.ajax({
        url: '@Url.Action("/TestCevabı")',
        type: 'post',
        data: { __RequestVerificationToken: token, yeniTest: JSON.stringify(yeniTest)},
        contentType: 'application/x-www-form-urlencoded; charset=utf-8',
        traditional: true
    });

控制器方法如下

    [HttpPost]
    [ValidateAntiForgeryToken]
    public bool TestCevabı(Test yeniTest)
    {
        ///
    }

我在控制器方法处传递ValidateAntiForgeryToken。但是在TestCevabı方法处的yeniTest为空。

1 个答案:

答案 0 :(得分:0)

我如下更改了控制器方法。

[HttpPost]
[ValidateAntiForgeryToken]
public bool TestCevabı(string yeniTest)
{
    ///
}

并将以下代码添加到TestCevabıService

        Test çözülenTest = new Test();
        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(testJsonFormat)))
        {
            DataContractJsonSerializer ser = new DataContractJsonSerializer(çözülenTest.GetType());
            çözülenTest = ser.ReadObject(ms) as Test;
            ms.Close();
        }     

现在已完成antforgerytoken通行证并填充了测试对象