我有3个用户控件,每个用户控件都需要根据各种URL参数等从XML提要中提取数据.现在,此XML Feed中的数据对于所有3个用户控件都是相同的,因为它们都发送相同的请求.
对于相同的数据做出3个单独的请求似乎很愚蠢.
我的想法是有一个我将调用的单例,它将向XML服务发出一个请求,然后将精确解析的结果呈现给用户控件.
即:
现在我考虑一下,我需要为"make a request"方法添加一些阻塞,这样我就不会多次同时调用它 - 我对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;
}
}
Run Code Online (Sandbox Code Playgroud)
确保每个控件都具有XML请求代码返回的类型的公共属性(在此示例中为字符串).
以供参考:
Page对象调用Page对象上的OnLoad方法,然后递归地为每个子控件执行相同操作,直到加载页面和所有控件.单个控件的Load事件发生在页面的Load事件之后.
来自:ASP.NET页面生命周期概述(应该作为一个很好的概述).
| 归档时间: |
|
| 查看次数: |
2166 次 |
| 最近记录: |