我在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)
我无法在谷歌上找到任何禁用的内容:/(
答案 0 :(得分: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
属性的痕迹。
因此,除非:
,否则您所描述的情况不会发生