ASP.NET CheckBox 在回发时未选中,没有奇怪的黑客攻击

2024-07-04

我有一个GridView带有复选框列。单击按钮后,所有选中复选框的行都应被删除。我不知何故偶然发现了一个奇怪而老套的解决方案,但我不知道它为什么有效。我已经搜索过相关的SO问题了。

相关代码:

Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Init
    ' I have no idea why this is needed for the checkboxes to work...
    Dim x = imageGridView.Rows
End Sub


Protected Sub RemoveButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles removeButton.Click

    For Each row As GridViewRow In imageGridView.Rows
        Dim selectCheckBox As CheckBox = DirectCast(row.Cells(0).FindControl("selectCheckBox"), CheckBox)
        If selectCheckBox.Checked Then
            Dim fileName As String = row.Cells(1).Text
            ImageList.Remove(ImageList.FindLast(Function(r) r.FileName = fileName))
        End If
    Next
    imageGridView.DataSource = ImageList
    imageGridView.DataBind()
End Sub

Aspx:

<asp:GridView ID="imageGridView" runat="server">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox ID="selectCheckBox" runat="server" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

线路Dim x = imageGridView.Rows要删除的行需要。我尝试后发现了这个RemoveButton_Click代码在Page_Initsub,然后删除代码,直到它不再起作用。Dim x = imageGridView还不够,并且在中做同样的事情是行不通的Page_Load.

我的复选框永远不会被禁用。

那么,简单来说,为什么我需要参考imageGridView.Rows in the Page_Init让我的代码正常工作?


这是一个有趣的行为。如果我将数据绑定到 GridView 中,我会重现该问题Page_Load在每次回发时。在这种情况下,复选框在回发时会失去其选择状态,但如果我们参考imageGridView.Rows in Page_Init,正如您所观察到的。

解决方案是将数据绑定在If Not IsPostBack条件块:

Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        imageGridView.DataSource = ImageList
        imageGridView.DataBind()
    End If
End Sub

然而,在这种情况下,我们不能提及imageGridView.Rows in Page_Init。这样做会导致复选框失去其选择状态(!?!)。

从 GridView 的源代码(假设这个来源 http://www.dotnetframework.org/default.aspx/4@0/4@0/DEVDIV_TFS/Dev10/Releases/RTMRel/ndp/fx/src/xsp/System/Web/UI/WebControls/GridView@cs/1546361/GridView@cs是可靠的),我注意到访问Rows收集会触发调用EnsureChildControls然后调用CreateChildControls。我无法进入 .NET 代码来查看此时发生的情况。在中调用这些方法Page_Init事件处理程序可能比预期更早出现GridView 的生命周期 http://thesitedoctor.co.uk/blog/complete-lifecycle-of-an-aspnet-page-and-controls/.

顺便说一句,访问HeaderRowFooterRow属性也会触发调用EnsureChildControls,并且对复选框的选择状态具有相同的效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET CheckBox 在回发时未选中,没有奇怪的黑客攻击 的相关文章

  • 已经有一个打开的 DataReader 与此连接关联,必须首先关闭该连接 + asp.net mvc

    我有一个带有表的 mysql 数据库entites其中包含多个字段 例如entity title entity description 表中还有3个外键user id 区域ID an 类别 id 在我的索引视图中 我想显示表中的所有实体 显
  • 如何在 ASP.NET 中提供 resx 文件?

    我怎样才能提供适当的语言环境 resx文件到 ASP NET 中的 http 客户端 e g GET App LocalResources MeshModdler resx 背景 我有一个客户端二进制文件 需要向网络服务器请求适当的语言资源
  • 如何将相对 URL 转换为完整 URL?

    通过示例可能更容易解释这一点 我正在尝试找到一种转换相对 URL 的方法 例如将 Foo aspx 或 Foo aspx 转换为完整的 URL 例如http localhost Foo aspx http localhost Foo asp
  • 有哪些用于性能测试 SharePoint Web 部件和控件的好技术?

    这是一个关于特定于 SharePoint Web 部件和控件的性能测试的问题 尽管标准 ASP NET 方法也适用 我想知道有哪些好的技术 考虑到以下因素 缓存 什么时候应该缓存什么 负载平衡服务器 存储状态 与页面其他部分的交互 例如多个
  • ASP.NET 文件上传:如何确保上传的文件确实是 JPEG?

    犯罪分子可以伪造他上传的文件的内容类型 因此 如果我通过页面接收服务器上的文件 我不能只检查其 MIME 类型和文件扩展名 有没有可靠的方法来检查上传的文件是否确实是 JPEG GIF 或 PNG 我需要拒绝所有其他格式 我可以尝试一点一点
  • IMG SRC 标签和 JavaScript

    是否可以从 IMG SRC 标签调用 JavaScript 函数来获取图像 url 像这样 img src GetImage 这是使用 NET 2 0 没有 这是不可能的 至少在所有浏览器中都是不可能的 你可以这样做 img src bla
  • 清除 cookie、会话和 formsauth 后,Asp.net 在注销时删除服务器上的会话

    我遇到了 ASP NET 的安全问题 注销时 我想确保会话被销毁 以便有人无法使用相同的 sessionid 和 auth cookie 并编辑其中的 cookie 并且服务器仍然响应会话 FormsAuthentication SignO
  • SiteMapNode 中的 URL 为空

    我有一个 SiteMap 每个 siteMapNode 中都有空白 URL 属性 有人知道如果 URL 为空如何呈现它们吗 我正在对 SiteMap CurrentNode 执行 foreach 它不会检索具有空 URL 属性的 siteM
  • 以编程方式将 ButtonColumn 从 DataTable 添加到 GridView

    我在 GridView 中添加带有按钮的列时遇到问题 从下面的代码中可以看出 GridView 的数据源是 DataTable 我需要使用按钮向表中添加一个附加列 从下面的代码中 我收到一条错误消息 System Windows Forms
  • ASP.NET 捆绑 - 忽略第二个 JS 文件

    我使用 ASP NET 的捆绑和缩小功能设置了一个简单的测试 我有两个非常简单的js文件 JS Site js function echo1 alert this is site js JS test js function echo2 v
  • 在 vb.net 中打乱字符串数组

    我正在 vb net 中开发一个网页 它将向用户生成许多多项选择题 我需要对已经放入数组中的四个答案进行洗牌 假设我必须遵循以下数组 array Correct Wrong1 Wrong2 Wrong3 我尝试使用以下方法 Public S
  • 通过外部拖放将事件添加到 Fullcalendar 时,项目无法获取 id

    我正在使用 FullCalendar 的外部拖放和他的代码 http arshaw com js fullcalendar 1 5 2 demos external dragging html http arshaw com js full
  • 使用AD的MVC3授权

    是否可以使用 AD 授权 拒绝 MVC3 应用程序的用户 我的应用程序目前使用 Windows 身份验证进行保护 但这意味着将用户添加到 Win2007 服务器上的组中 我想更改这一点 以便用户根据其 AD 角色被允许 拒绝访问应用程序 和
  • 如何在 C# 中创建 JSON 字符串

    我只是使用 XmlWriter 创建一些 XML 以在 HTTP 响应中发回 您将如何创建 JSON 字符串 我假设您只使用 stringbuilder 来构建 JSON 字符串 然后将您的响应格式化为 JSON Using Newtons
  • ASP.NET CheckBox 在回发时未选中,没有奇怪的黑客攻击

    我有一个GridView带有复选框列 单击按钮后 所有选中复选框的行都应被删除 我不知何故偶然发现了一个奇怪而老套的解决方案 但我不知道它为什么有效 我已经搜索过相关的SO问题了 相关代码 Protected Sub Page Init B
  • 在已部署的 ASP.NET 网站项目上,我可以更新 .resx 文件而不重新编译吗?

    我正在将 ASP NET 应用程序部署到锁定的生产环境 将程序集 包括卫星资源程序集 推送到此环境具有与其关联的进程 但将非程序集复制到环境则没有 在 ASP NET 网站项目中 我可以更新 resx 文件而不重新编译吗 我想这取决于您的应
  • Web 表单文本字段不直接位于 ASP 身份注册页面上

    我在 Web 表单项目中遇到文本字段未正确对齐的问题 我使用 Visual Studio 2013 中的 Web 窗体创建了一个新的 ASP NET Web 应用程序 我对 ASP Identity 用户表进行了更改 以获取有关每个用户的附
  • CdnFallbackExpression 列表

    CDN 上有很多可用的开源 JS 库 使用 ASP NET MVC 的捆绑功能 可以定义 CDN 失败时的后备方案 CdnFallbackExpression 是一个有用的功能 但是 我似乎找不到用于 jquery 之外的库的任何表达式列表
  • AjaxToolkit for 3.5 不工作

    我正在尝试使用从下载的 ajaxtool 套件here http ajaxcontroltoolkit codeplex com releases view 43475对于颜色选择器 当我尝试在我的任何页面上使用它时 它会显示一个错误 Th
  • Vb.Net动作委托问题?

    我是 vb net 新手 这个问题可能很新手 之前已经回答过 但我找不到 我正在尝试 lambda 功能并在这里受到打击 Private Function HigerOrderTest highFunction as Func Of Int

随机推荐