我有一个关于使用 ASP.NET 和 C# 加载数据的最佳实践的问题
作为概述,我们有一个网页,它使用支持的 Web 服务来获取相当大的 XML 文件。然后将该文件转换为客户端 JavaScript 以用于加载 ListView。
protected string clientSideJavaScripts;
protected void Page_Init(object sender, EventArgs e)
{
// code goes here to submit a request and receive an XML Response from the web service
// code goes here to set clientSideJavaScripts = translated Java Script from the XML Document
// other code goes here
}
ASP 文件具有以下内容:
<head>
<title></title>
<script type="text/javascript>
<%=clientSideJavaScripts%>
</scrpit>
</head>
...
然而,表单上还有几个按钮会导致回发。这些与上面的 javascript 没有直接关系。
一切正常,但是我相信(由于我对 ASP.NET 生命周期的了解有限),该 Web 服务在每次回发时都会被调用。因此,每当有人点击网页上的几个 asp:buttons 时,无论按钮的性质如何,它都会执行加载该文件的开销,因为回发将在从 Init 到过去的生命周期阶段循环回发事件处理。
显而易见的事情是不要在回发时调用 web 服务。IE:
protected string clientSideJavaScripts;
protected void Page_Init(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// code goes here to submit a request and receive an XML Response from the web service
// code goes here to set clientSideJavaScripts = translated Java Script from the XML Document
}
// other code goes here
}
然而,其结果是服务器端字符串“clientSideJavaScripts”不再被实例化,因此客户端在第一次回发后不再获得所需的 javascript。
我确信在这种情况下我缺少一种明显(并且可能是常见的)方法来处理 javascript 的持久性,但是我不知道它,因此我正在寻求任何人的建议。确保 Web 服务只被调用一次的最佳实践是什么?
我也在使用 AJAX 和 JQuery Mobile,如果这有什么不同的话
任何建议将不胜感激。非常感谢