0

我有三个控制器,但Controller1继承自.Controller2Controller2Controller3

例如

public class Controller1 : Controller
{
    [HttpPost]
    [ValidateAntiForgeryToken()]
    public virtual ActionResult Create(MyClass test)
    {
...

public class Controller2 : Controller1
{
...

public class Controller3 : Controller2
{
    [HttpPost]
    [ValidateAntiForgeryToken()]
    public override ActionResult Create(MyClass test)
...

也在视图中添加

@Html.AntiForgeryToken()

当有一个控件并且没有继承的好工作但使用继承和覆盖方法时,ValidateAntiForgeryToken 会出错。

validationAntiforgeryToken 无效并出现错误:

所需的防伪表单字段“__RequestVerificationToken”不存在。

[HttpAntiForgeryException (0x80004005):所需的防伪表单字段“__RequestVerificationToken”不存在。]

...

谢谢。

4

1 回答 1

2

您的问题不在于您的控制器层次结构,这是因为您的请求中没有 AntiForgeryToken(如错误所示)。

为此,请将以下内容添加到发布到控制器的视图(在表单内):

@Html.AntiForgeryToken()
于 2013-09-24T11:49:37.597 回答