有谁知道控件的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的内容和大小,因此存储这些值的位置是什么?
感谢名单
答案 0 :(得分:2)
它保存在视图状态中, 请看这篇文章:http://www.west-wind.com/weblog/posts/2006/Feb/20/ViewState-and-OnItemCommand-on-an-ASPNET-Repeater
答案 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在增长。