[英]How ASP.NET CommandName and CommandArgument values are stored?
有谁知道控件的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的内容和大小,因此存储这些值的位置是什么?
感谢名单
它保存在viewstate中,请看这篇文章: http : //www.west-wind.com/weblog/posts/2006/Feb/20/ViewState-and-OnItemCommand-on-an-ASPNET-Repeater
这些值确实存储在ViewState
如果您使用带有和不带CommandArguments / Names等的按钮进行简单的GridView
测试......那么您可以看到ViewState更大。
但是,这些值永远不会是真正的大型对象或任何东西,所以我个人不会担心它。
如果你想了解ASP.NET内部,我仍然认为最好的书是由Nikhil Kothari和Vandana Datye开发ASP.NET服务器控件和组件 。 它是为.NET 1.x编写的,所以有点陈旧,但仍然很好地涵盖了基本架构。
在您的示例中,ViewState大小不受影响的原因是在处理标记的Init阶段期间未跟踪ViewState。 在标记中设置为固定值的属性值将在编译ASP.NET页面时生成的代码中进行硬连线。
这篇MSDN文章很好地概述了ViewState。
如果将按钮放在数据绑定控件(如转发器或GridView)中,并使用数据绑定语法为每行的CommandArgument设置不同的值,您将看到ViewState在增长。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.