首页 > 解决方案 > @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 请求不是来自第三方域。我没想到会从表单字段中得到空引用异常?

标签: razorasp.net-mvc-5

解决方案


推荐阅读