0

我有三个控制器,但Controller1继承自Controller2Controller2继承Controller3ValidateAntiForgeryToken in override controller

例如

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是无效的,并得到错误:

The required anti-forgery form field "__RequestVerificationToken" is not present.

[HttpAntiForgeryException (0x80004005): The required anti-forgery form field "__RequestVerificationToken" is not present.]

...

感谢。

回答

2

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

要做到这一点,添加以下到您的视图(表单内),其职位到控制器:

@Html.AntiForgeryToken() 
+0

没有考虑到我添加@ Html.AntiForgeryToken() – khoshghadam

+0

你确定你在里面加了它表格? – Kenneth

+0

是的,我相信你可以测试 当你有一个控制器,并没有从其他控制器继承工作良好,但在继承获得错误验证 – khoshghadam