gpt4 book ai didi

c# - 如何在多个用户控件之间共享数据?

转载 作者:行者123 更新时间:2023-11-30 14:02:28 25 4
gpt4 key购买 nike

我有 3 个用户控件,每个控件都需要根据各种 URL 参数等从 XML 提要中提取数据。现在,此 XML 提要中的数据对于所有 3 个用户控件都是相同的,因为它们都发送相同的请求。

为相同的数据发出 3 个单独的请求似乎很愚蠢。

我的想法是拥有一个我将调用的单例,它将向 XML 服务发出一个请求,然后将经过良好解析的结果呈现给用户控件。

即:

  1. 用户控件A抓取单例。
  2. 用户控件A要求单例发出请求...
  3. Singleton 发出请求并将 XML 解析为各种属性。
  4. 用户控件 C 抓取单例并提取其数据。
  5. 用户控件 A 从单例中提取数据。
  6. 用户控件 B 抓取单例并提取其数据。

既然我想到了,我需要向“发出请求”方法添加某种阻塞,这样我就不会同时多次调用它——我是 C# 的新手,什么是最简单的方法来做到这一点?用户控件甚至可以同时运行吗?有什么地方对此有很好的概述吗?

问题是“在 C# 中的页面请求之间会重新实例化单例吗?”,但我想更普遍的问题是“我在做一件愚蠢的事吗”,“最好的方法是什么?”或者“有没有更简单的方法来做我想做的事?”。

最佳答案

一般来说,如果我的直觉是单例,我会认为我做错了(正如您的直觉)。

如果您希望每个页面请求一个 XML 请求,并且数据要在控件之间共享,我会这样做:

public class Page : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string data = DoXMLRequest();
ucControl1.Data = data;
ucControl2.Data = data;
ucControl3.Data = data;
}
}

确保每个控件都有一个由您的 XML 请求代码返回的类型的公共(public)属性(在本例中是一个字符串)。

供引用:

The Page object calls the OnLoad method on the Page object, and then recursively does the same for each child control until the page and all controls are loaded. The Load event of individual controls occurs after the Load event of the page.

发件人:ASP.NET Page Life Cycle Overview (这应该是一个很好的概述)。

关于c# - 如何在多个用户控件之间共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5893095/

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