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

标签 c# asp.net .net viewstate

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

我创建了一个简单的页面,其中包含 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 的内容和大小,那么这些值存储在哪里?

谢谢

最佳答案

如果你想了解 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。

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

关于c# - 如何存储 ASP.NET CommandName 和 CommandArgument 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10494938/

相关文章:

c# - 如何在 C# 中获取超过 100 位的十进制数字?

c# - 在 C# 中不区分大小写地比较字符串

c# - 检查控件内是否至少有一个文本框不为空

c# - 对动态对象使用显式接口(interface)实现

asp.net - ASP.NET 中的内联脚本

javascript - knockout : Populate dropdown

asp.net - PHP 的 memory_get_usage 的 .NET 等价物是什么?

c# - 使用 docker 在 Linux 上运行 .net Framework 应用程序的最佳方式是什么

c# - 将 c# winforms 导入 excel,

c# - 如何将 IList 复制到相同类型的 IList?