2012-05-02 28 views
0

我在asp.net已经在网站MVC 3,我只是把一些防伪标志,我不知道为什么,在我的形式(不是别人)之一,我收到此异常:为什么我的防伪标记上有“禁用”属性?

A required anti-forgery token was not supplied or was invalid. 

看来,我的HTML代码,我有以下标志:

<input name="__RequestVerificationToken" 
type="hidden" value="0Ll0Io/fX0dR5HXCAroCKTKCBqNn2tmwgcqgYGjln8WVdWOPF2VQEen4wd2UKso1lpIstniXWjdgEE6m0ADgfRhIP25K12Y/ll+PFaYzoQgFAqSfL4XqNYKMrzvAKqmuqXnh3lwBFCYcDXKxRshKVefYelNfWgdFMtf8Ru/dT4qzWw9vU4KQS8eliglpzN9jXu5fekpBOsQGzOhoFHI3Ow==" 
disabled="disabled"> 

为什么会出现这种禁用属性?

下面是我的一些代码:

@using (Html.BeginForm("XXX", "YYY", FormMethod.Post)) 
{ 
@Html.AntiForgeryToken() 
... 
} 

和控制器:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult XXX(SessionStore sessionStore, CurrentModel model) 

我找不到禁用任何关于谷歌:/(

回答

3

这里的代码,生成隐藏字段:

public HtmlString GetHtml(HttpContextBase httpContext, string salt, string domain, string path) 
{ 
    string str = this.GetAntiForgeryTokenAndSetCookie(httpContext, salt, domain, path); 
    string antiForgeryTokenName = AntiForgeryData.GetAntiForgeryTokenName(null); 
    TagBuilder builder = new TagBuilder("input"); 
    builder.Attributes["type"] = "hidden"; 
    builder.Attributes["name"] = antiForgeryTokenName; 
    builder.Attributes["value"] = str; 
    return new HtmlString(builder.ToString(TagRenderMode.SelfClosing)); 
} 

正如你所见,没有任何disabled属性的痕迹。

所以,你所描述的情况不可能发生,除非:

  1. 您使用的是一些定制的助手或定制的ASP.NET MVC
  2. 您已经使用JavaScript来添加此属性
+0

你是对的,在一个jQuery脚本中,我禁用了一些输入类型,看起来这是一个陷入选择器!谢谢 – J4N

相关问题