This文章指出,Page_PreInit
应该用来在哪个事件中应该设置动态控制属性?
创建或重新创建动态控件。
例如:
Button button = new Button();
somePanel.Controls.Add(button);
好。我明白。
然而,它也表示:
如果请求是回发,所述控件的值尚未 是来自于视图状态恢复。如果您在此 阶段设置控件属性,则其值可能会在下一个事件中被覆盖。
咦?
这是否意味着我应该做的就是创建按钮,但不设置按钮的任何成员?
例如:
Button button = new Button() { CommandArgument="arg" };
somePanel.Controls.Add(button);
这是否意味着,在这个事件中设置CommandArgument
是不正确/不推荐/可能会导致错误/意外的行为?
假设是不正确,这将导致我认为一个人会做这样的事情:
protected void Page_PreInit(object sender.....)
{
somePanel.Controls.Add((new Button());
}
protected void Page_Init(object sender.....)
{
foreach(Button button in somePanel.Controls)
button.CommandArgument = "arg";
}
这是正确的方式?
最后,在哪个事件中应该设置动态控制属性?
做什么文章说..有它在init中,然后有一些如果IsPostBack代码..你可以做预渲染或PreInit以及我的意见 – MethodMan 2012-02-23 19:25:56
@DJKRAZE - 我很困惑什么文章状态,因此问题:)。 – 2012-02-23 19:29:57