gpt4 book ai didi

c# - ASP.Net生命周期和控制状态和 View 状态

转载 作者:行者123 更新时间:2023-11-30 17:49:11 24 4
gpt4 key购买 nike

在 msdn 中,他们提到, View 状态值在 page_init 和 page_initcomplete 之间加载。让我们假设,在获取请求期间,我正在为文本框的文本属性分配一个值,如 page_load () { if(!IsPostBack) {textobx.text="get";}} .所以这个 get 值存储在 viewstate 中并且在浏览器中可见。在我的下一次回发期间,我将在 page_init 事件中为相同的文本属性分配一个 post 值。因此,根据 msdn,在 page_initcomplete 事件之后,这个 post 值必须被 get value 覆盖。但事实并非如此。为什么?

   protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TextBox1.Text = "hello";
}
TextBox2.Text = TextBox1.Text.ToString();

}
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
TextBox1.Text = "init";
}
protected override void OnInitComplete(EventArgs e)
{
base.OnInitComplete(e);
TextBox1.Text = "init";

}

Textbox2.Text 中的第一次值是 hello 没问题。但是在回发期间,我期待 textbox2.text 上的初始值。但它仍然是你好。为什么?

最佳答案

您的 ViewState 假设不太正确。如 ASP.NET Page Life Cycle Overview 中所述,ViewState 在 InitComplete 之后加载。

意思是,无论您在 InitInitComplete 中写入控件的属性(顺便说一句,在生命周期的那个点不推荐这样做)都将被InitCompleteLoad 之间的 ViewState。

您的页面显示的行为是正确的。

关于c# - ASP.Net生命周期和控制状态和 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22034272/

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