javascript - antiforgerytoken 和数据发送但控制器方法中的数据为空
问题描述
我尝试通过 html 页面上的以下代码将 antiforgerytoken 和 yesiTest 由一些数据(它不为空)填充到控制器。
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 为空。
解决方案
我改变了控制器方法如下。
[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 通过并填充了测试对象
推荐阅读
- python - 执行命令 pip install jinja 时出现此错误
- swift - 分段选择器删除了可访问性
- javascript - 输入隐藏的html5验证问题
- python - ImportError:无法导入名称“bigquery”
- pandas - 具有时间滞后的滚动平均值(在熊猫中)
- fonts - 在日文版 Windows 上使用扩展 ASCII 字符(字符 > 127)时出现剪贴板问题
- c# - 拦截和更改应用程序生成的 sql 查询
- spring - Spring框架中@PropertySource和@DynamicPropertySource的区别
- javascript - 如何将 cshtml 文件中的布尔值传递给 javascript 函数/构造函数?
- java - Java 中的优先级队列(最大堆声明)