gpt4 book ai didi

c# - 在什么情况下应该设置动态控件属性?

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:27 25 4
gpt4 key购买 nike

This文章指出 Page_PreInit 应该用于

create or re-create dynamic controls.

例如:

Button button = new Button();
somePanel.Controls.Add(button);

很好。我明白了。

但是,它还说:

If the request is a postback, the values of the controls have not yet been restored from view state. If you set a control property at this stage, its value might be overwritten in the next event.

嗯?

这是否意味着我应该做的只是创建按钮,而不是设置按钮的任何成员?

例如:

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";
}

这是正确的方法吗?

最后,应该在什么情况下设置动态控件属性?

最佳答案

最后一个问题没有单一的答案,因为根据属性的性质,在特定方法中设置值可能有意义也可能没有意义。

If the request is a postback, the values of the controls have not yet been restored from view state. If you set a control property at this stage, its value might be overwritten in the next event.

力量是这里的关键词。如果您考虑一些属性可能会随着表单经历各种状态而改变,那么您必须注意可能被覆盖的内容以及这是否是一件坏事的问题,因为它可能是更新的值应该是持久的,在其他情况下,原始值可能更好,例如有人想将表单重置为初始状态。

我的建议是做一些试验和错误,看看什么是有效的,因为我记得使用动态控件在某些情况下可能很难正确管理。

关于c# - 在什么情况下应该设置动态控件属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com