Model view controller MVC AntiforgeryToken-限制?

Model view controller MVC AntiforgeryToken-限制?,model-view-controller,internet-explorer-11,antiforgerytoken,Model View Controller,Internet Explorer 11,Antiforgerytoken,我有一个通过firefox显示良好的视图,但不是在IE11上 它使用Datatables,其中两列有按钮来切换某些显示数据的状态 这些列非常相似,其中一列是这样的 @{ <td style="width: 18%"> @if ((ViewBag.UserIsAdmin == "1") && ("AV".Contains(Model[ix].Status[0])) )

我有一个通过firefox显示良好的视图,但不是在IE11上

它使用Datatables,其中两列有按钮来切换某些显示数据的状态

这些列非常相似,其中一列是这样的

        @{
            <td style="width: 18%">
                @if ((ViewBag.UserIsAdmin == "1") && ("AV".Contains(Model[ix].Status[0])) )
                {
                    <span class="hidden_span">@Html.DisplayFor(modelItem => Model[ix].StockId)</span>
                    string voidItemButtonCaption = String.Format("{0} {1}", ((Model[ix].Status[0] == 'A') ? "Void Item" : "Un-Void Item"), Model[ix].StockId);
                    using (Html.BeginForm("VoidStockItem", "Stock", new { stockId = Model[ix].StockId, categoryId = Model[ix].CategoryId, bAvailableOnly = availableOnly }, FormMethod.Post, null))
                    {
                        @Html.AntiForgeryToken()
                        @Html.Raw(string.Format("<input type=\"submit\" value=\"{0}\" name=\"VoidStockItem\" class=\"btn btn-default smaller_btn_btn_default\" />", voidItemButtonCaption));
                    }
                }
                else
                {
                    @Html.DisplayFor(modelItem => Model[ix].StockId)
                }
            </td>
        } 
@{
@如果((ViewBag.UserIsAdmin==“1”)&&((“AV.Contains)(模型[ix]。状态[0]))
{
@DisplayFor(modelItem=>Model[ix].StockId)
字符串voidItemButtonCoption=string.Format(“{0}{1}”,((模型[ix]。状态[0]='A')?“无效项”:“取消无效项”),模型[ix]。StockId);
使用(Html.BeginForm(“VoidStockItem”,“Stock”,new{stockId=Model[ix]。stockId,categoryId=Model[ix]。categoryId,bAvailableOnly=availableOnly},FormMethod.Post,null))
{
@Html.AntiForgeryToken()
@Html.Raw(string.Format(“,voidItemButtonCoption));
}
}
其他的
{
@DisplayFor(modelItem=>Model[ix].StockId)
}
} 
我发现,如果我的模型包含超过115个项目,那么在IE中,视图不会显示,它只是说“此页面无法显示”。 在IE中使用F12也没有多大帮助。。。。 DOM7011:此页上的代码禁用了反向和正向缓存。有关详细信息,请参阅:

经过大量的头发拉扯,我发现如果我删除防伪令牌,页面加载正确。显然,我不能把这当作一个解决办法,但我想这至少是一个线索

因此,从某种角度来看,我似乎只能使用大约230种防伪代币。 有问题的视图列出了股票,并允许用户作废特定的项目,因此这不是什么稀奇的事情

所以我的问题是

  • 视图上的防伪令牌数量是否有限制
  • 有没有办法只在单击其中一个提交按钮时插入一个按钮
  • 我做错什么了吗
  • 有人能给我指出正确的方向来重新热爱这个问题吗

  • 非常感谢您的帮助。

    我最终通过AJAX完成了这项工作

    它从_布局中拾取AntiforgeryToken,效果很好

    //There isn't an antiforgerttoken on this page but there is one in the _~\shared\layout so it picks that up
    params["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
    //Set the generic params
    params["categoryId"] = catId;
    params["denom"] = thisdenom;
    params["bAvailableOnly"] = bAvail;
    
    if (bIsBatch) {
        url = "@Url.Action("VoidStockBatch", "Stock")";
        params["stockBatchId"] = itemId;          
    } else {
        url = "@Url.Action("VoidStockItem", "Stock")";
        params["stockId"] = itemId;
    }
    
    $.ajax({
        url: url,
        type: 'POST',
        cache: false,
        data: params,
        success: ...........
    

    我想也许我应该使用一个按钮,在点击事件上挂接一个AJAX调用到POST操作。。。听起来可行吗?我最终通过AJAX完成了。