1

所以我建立了一个网站,在许多页面上,在服务器上构建了一个标准的“网格”(asp:table),在许多页面上,这些网格包含标准链接(“编辑”、“删除”等)或每行一个复选框,用于多选操作。

必须在页面生命周期中尽早构建网格,以便可以访问动态服务器控件以进行事件处理 (CommandEvents)。例如,触发命令事件(在命令参数中传递记录的 ID)的“编辑记录”按钮必须在 page_load 之上或之前构建,否则将不会处理该事件。这很好用,但有时提前构建整个网格并不是很有效。例如,如果它是执行操作然后离开页面的操作,那么构建整个网格只是为了在页面呈现/需要之前离开页面是愚蠢的。或者,在操作从表中添加或删除记录的情况下,表已经构建,并且必须第二次构建,

我的问题是,在设计流程方面我是否遗漏了什么。我想这是 CRUD 类型网站的标准场景。基本上,我希望能够以最少的冗余/不必要的服务器处理来处理来自动态构建的控件的事件。

动态构建标准 html 控件并使用客户端脚本执行 __postback() 传递“action”和“ID”值会更好吗,这样它们就可以在网格之前通过 Page_Load() 访问建造?我是否应该利用在访问动态 asp 服务器控件之前可以使用 Request.Form 信息这一事实?我确实喜欢以更加面向对象的方式(而不是构建动态 html 字符串)访问/设置动态控件的属性的能力,但我认为在这种情况下效率胜过期望。

4

1 回答 1

1

因此,我最终继续使用 __EVENTTARGET 和 __EVENTARGUMENT 请求值来处理我希望在完成大部分页面加载之前处理的服务器事件。使用来自 HTMLControls 集合而不是 WebControls 集合的控件并没有真正使动态控件的构建有任何不同,所以我认为我的担忧是不合理的。

好的一面是,现在可以在页面生命周期的任何地方在一个简单的 switch 语句中捕获事件,而不是依赖于在构建所有动态内容并处理视图状态之后触发的 CommandEvents。

认为利用 .net“表单”环境的内置事件处理特性比本质上创建我自己的事件处理例程更可取,但似乎有一些例外。

于 2013-10-22T15:31:55.530 回答