【问题标题】:Asp.NET WebForm How to remove a control from submitAsp.NET WebForm 如何从提交中删除控件
【发布时间】:2012-03-05 00:26:27
【问题描述】:

我有一个非常复杂的 Asp.NET 4.0 应用程序,具有使用 Telerik RadControls 构建的特定表单。

有一个带有嵌套 RadGrid 的 RadGrid,其行由各种文本框(RadTextBox 等...)组成。

这个表单很大,当它增长时,如果我发布页面(异步与否),我会在 Application_BeginRequest 中收到错误,堆栈是:

in System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()
in System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding)
in System.Web.HttpRequest.FillInFormCollection()

我知道 Web 表单中可发布的项目限制为 1000 个,并且我知道此限制可通过 web.config 进行配置。

我不需要发布这些控件:我使用它们来启用 Telerik 控件的客户端功能,所以我想知道:有一种方法可以专门从 HttpValueCollection 中删除一个控件或一组控件为了减少项目的数量?

非常感谢!

更新:正如@Alex 建议的那样,我已经实现了一个函数来禁用网格内的所有输入:

function disableAllGridsControls() {
    $("input[id*=gridServiziCommessa]").attr("disabled", "disabled");
}

这解决了标准回发的问题,但不是 ajax 更新。 Grid 由一个名为 RadAjaxManager 的 Telerik 控件进行 ajaxified,该控件扩展了标准的 ASP.NET Ajax。 这个控件暴露了一个BeginRequest event,所以我试图在这个事件期间调用disableAllGridsControls:

function ajaxManager_beginRequest(sender, args) {
    disableAllGridsControls();
}

但根本不起作用...看着提琴手,我仍然看到在 AJAX 调用期间发布的所有输入...

还有另一个奇怪的行为:如果我禁用网格服务器端 (Enabled="False") 并进行 AJAX 调用,输入仍然会发布。

我错过了什么?

UPDATE2 好的,我很确定问题出在 MicrosoftAjax 框架或基于它的 RadAjaxManager 中。似乎为执行 ajax 请求而构建的参数集合忽略了输入被禁用的事实......很奇怪......

【问题讨论】:

    标签: asp.net http webforms asp.net-ajax telerik


    【解决方案1】:

    你可以disable你的控件然后they won't be successful(被禁用的控件不能成功),因此不会被提交。

    它可以在客户端和服务器端完成。

    • 在服务器端将父控件的Enabled 属性设置为true - 这将禁用其中的所有文本框、下拉菜单等。

    • 在客户端可以这样做,例如通过在表单提交期间禁用必要的控件。

    这是一个非常简单的示例,说明如何使用 jQuery 在客户端完成:

    $('#theForm').submit(function () {
        $(this).find('[name^="<%= yourGrid.UniqueID %>"]')
            .attr('disabled', 'disabled');
    
        return true;
    });
    

    这里我禁用了所有name 属性以yourGrid 开头的控件(假设这是一个命名容器)值。

    尽管如此,我认为通过web.config 更改发布值的最大数量是一个最佳选择。

    【讨论】:

    • 非常感谢!它适用于正常的回发,但不能在 ajax 场景中做同样的事情。我已经更新了问题来解释......
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2014-06-27
    • 1970-01-01
    • 2012-09-10
    • 2018-04-10
    相关资源
    最近更新 更多