2012-05-02 64 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

相關問題