gpt4 book ai didi

c# - ASP.NET 基于 ViewState 动态加载控件

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

我有一个 UserControl 可以动态创建多个 TextBox。文本框的数量取决于用户的选择。我选择将每个 TextBox 的 ID 存储在 UserControlViewState 对象中,以便它们可以在每次回传中一致地重新创建。

如果我在 Page_Init 期间重新创建动态控件(如推荐的那样),则 UserControlsViewState 尚未填充.

如果我在 Page_LoadPreLoad 期间重新创建动态控件,那么它们的回传值直到 Page_Load 事件之后才会重新水化,所以直到导致问题的页面生命周期后期,我才能访问它们的正确值。

有更好的方法吗?

最佳答案

我遇到了类似的第 22 条军规——我需要向我的页面添加动态用户控件,但它们取决于用户所做的下拉列表选择。当然,在设置 View 状态之前,下拉列表的值无法访问,但是如果我们希望用户控件通过 View 状态维护它们自己的状态,建议在 Page_Init 中创建用户控件,但那是在 View 状态存在之前,所以我无法轮询那里的下拉列表。

另一个对我有用的建议——从 Request.Form 集合中获取下拉列表的值:

protected void Page_Init(object sender, EventArgs e)
{
//get the user's DropDownList selection
int visualizerMode = Int32.Parse(Request.Form[ddlVisualizerMode.UniqueID]);

//now dynamically load a usercontrol based on that value
LoadUserControl(visualizerMode);
}

...这对我来说效果很好。这是直接使用 HTML 表单的倒退,我经常忘记这一点,因为它已经在 ASP.NET WebForms 模型中使用了很多年。

关于c# - ASP.NET 基于 ViewState 动态加载控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18739335/

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