如何存储 ASP.NET 命令名称和命令参数值

本文关键字:命令 参数 NET ASP 何存储 存储 | 更新日期: 2023-09-27 18:33:40

>有谁知道控件的CommandName和CommandArgument属性存储在哪里?我对检索它们不感兴趣,只是为了了解有关 ASP.NET 内部结构的更多信息以及将来的页面大小注意事项。:)

我创建了一个包含 3 个按钮的简单页面,它们的命令Arg 和 CommandName 设置如下:

<asp:Button Text="Click1" runat="server" CommandArgument="1" CommandName="Delete" OnCommand="CommandExec" />
<asp:Button Text="Click2" runat="server" CommandArgument="2" CommandName="Save" OnCommand="CommandExec" />
<asp:Button Text="Click3" runat="server" CommandArgument="3" CommandName="Copy" OnCommand="CommandExec" />

将 CommandArgument 或 CommandName 更改为相当大的值不会影响 ViewState 内容和大小,那么这些值存储在哪里?

感谢

如何存储 ASP.NET 命令名称和命令参数值

如果你想了解 ASP.NET 内部结构,我仍然认为最好的书是Nikhil Kothari和Vandana Datye的《开发 ASP.NET 服务器控件和组件》。 它是为 .NET 1.x 编写的,所以有点过时,但仍然很好地涵盖了基本体系结构。

在您的示例中,视图状态大小不受影响的原因是,在处理标记的 Init 阶段未跟踪 ViewState。 在标记中设置为固定值的属性值将在编译 ASP.NET 页时生成的代码中硬连线。

这篇 MSDN 文章很好地概述了视图状态。

如果将按钮放在数据绑定控件(如中继器或 GridView)中,并使用数据绑定语法为每行的 CommandArgument 提供不同的值,则会看到 ViewState 增长。

保存在视图状态中,请看这篇文章:http://www.west-wind.com/weblog/posts/2006/Feb/20/ViewState-and-OnItemCommand-on-an-ASPNET-Repeater<</p>

div class="answers">

这些值确实存储在ViewState

如果您要使用带有和不带有命令参数/名称等的按钮的简单GridView进行测试......然后,您可以看到视图状态更大。

但是,这些值永远不会是真正的大对象或任何东西,所以我个人不会担心它。