覆盖控制器中的ValidateAntiForgeryToken

时间:2013-09-24 11:42:02

标签: c# asp.net-mvc asp.net-mvc-4 antiforgerytoken method-overriding

我有三个控制器,但Controller1继承自Controller2继承的Controller2Controller3

例如

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)
...

也在View添加

@Html.AntiForgeryToken()

当有一个控件但没有继承好的工作但是当使用inherit和override方法时,ValidateAntiForgeryToken会出错。

validationAntiforgeryToken无效并收到错误:

  

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

     

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

...

感谢。

1 个答案:

答案 0 :(得分:2)

你的问题与你的Controller层次结构无关,这是因为你在请求中没有AntiForgeryToken(如错误所示)。

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

@Html.AntiForgeryToken()