0

我有一个关于使用 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,如果这有什么不同的话

任何建议将不胜感激。非常感谢

4

0 回答 0