如何存储ASP.NET CommandName和CommandArgument值?

时间:2012-05-08 08:11:07

标签: c# asp.net .net viewstate

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

我创建了一个包含3个按钮的简单页面,其commandArg和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的内容和大小,因此存储这些值的位置是什么?

感谢名单

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

这些值确实存储在ViewState

如果您使用带有和不带CommandArguments / Names等的按钮进行简单的GridView测试...那么您可以看到ViewState更大。

然而,这些价值永远不会是真正的大型物品或任何东西,所以我个人不会担心它。

答案 2 :(得分:2)

如果你想了解ASP.NET内部,我仍然认为最好的书是Developing ASP.NET Server Controls and Components by Nikhil Kothari and Vandana Datye。它是为.NET 1.x编写的,所以有点陈旧,但仍然很好地涵盖了基本架构。

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

This MSDN article概述了ViewState。

如果将按钮放在数据绑定控件(如转发器或GridView)中,并使用数据绑定语法为每行的CommandArgument设置不同的值,您将看到ViewState在增长。