razor - @Html.AntiForgeryToken() 抛出空引用错误
问题描述
我正在 MVC 项目中构建第三个或多或少相同的表单(这意味着我正在复制和粘贴以节省时间)。这种只有一个控件的新表单在 @Html.AntiForgeryToken() 行上引发空引用错误。
看法:
@model SubSheets.ViewModels.TaskItemViewModel
@using (Html.BeginForm("CreateTaskItem", "TaskItems"))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<div class="form-group">
@Html.LabelFor(m => m.Name, "Task Name", new {@class = "control-label col-md-2"})
<div class="col-md-2">
@Html.EditorFor(m => m.Name, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(m => m.Name, "", new {@class = "text-danger"})
</div>
</div>
</div>
}
控制器:
[Authorize]
[HttpPost]
public ActionResult CreateTaskItem(TaskItemViewModel viewModel)
{
/* db context actions */
return View("../WorkItems/CreateWorkItem");
}
表单发布得很好,数据也保存得很好。但是我得到一个空引用错误,第 13 行:
你调用的对象是空的。
Line 11: @using (Html.BeginForm())
Line 12: {
Line 13: @Html.AntiForgeryToken()
Line 14:
Line 15: <div class="form-horizontal">
我以为我理解 Html 助手添加了一个隐藏的表单字段,以确保 Post 请求不是来自第三方域。我没想到会从表单字段中得到空引用异常?
解决方案
推荐阅读
- python - 在默认用户模型的情况下,如何解决 Django “TypeError at /auth/users/create_user() missing 1 required positional argument: 'username'”?
- c++ - 前向声明后,我不能在同一命名空间中使用其他类
- c++ - 以下 c++ 代码在 leetcode 中有效,但在我的 vscode 中无效,为什么?
- laravel - irazasyed/telegram-bot-sdk 中带有参数的 triggerCommand
- android - Spinner 不显示项目。我现在正在制作盘点程序。我从 API 获取数据。我有问题。微调器不显示项目
- fractals - 曼德布罗集,混沌轨迹
- r - 使用 dplyr - R 合并两个 csv 文件以从输出文件中删除重复项
- python - 如何“旋转”交换 matplotlib.pyplot.imshow 轴
- powerbi - 计算列和度量之间有什么区别?
- javascript - 三元运算符中的三元运算符是否可能