变量后面的asp.net代码

时间:2009-11-11 13:27:26

标签: asp.net variables code-behind

我在页面加载中生成一些头部html,因此我查询数据库一次。在页面中我再次查询数据库并使用内联代码将数据放入html。

我的问题是有更好的方法吗?我不希望每次查询数据库并从内联代码中获取那些填充的变量。像page_load中的page.addVariable之类的内容,并且像内容一样触及内容,例如page.variables [“variablename”]

提前致谢

3 个答案:

答案 0 :(得分:3)

如果我理解你的要求,你可以制作一个存取器并将其设置为受保护。这将允许您从页面访问它。

如果要阻止在回调上调用数据库,可以始终将信息添加到页面上的视图状态。

有关视图状态,隐藏字段和Cookie的信息: http://www.csharphelp.com/archives/archive207.html

答案 1 :(得分:1)

我不确定这是否是您所追求的,但您可以使用HiddenField在页面上存储您想要的任何数据。

此外,如果您不需要它在页面上,则可以使用SessionViewState

以下是使用ViewState作为属性的示例(注意。您可以将ViewState与Session交换,查看我给你的链接以获取两者之间的解释):

public string YourProperty
{
    get
    {
        object content = ViewState["YourProperty"];
        if (content == null)
        {
            return string.Empty;
        }
        return content.ToString();
    }
    set
    {
        ViewState["YourProperty"] = value;
    }
}

请注意,您放入ViewStateSessionState的所有内容都必须标记为可序列化。

如果它是一个非常简单的类,只需使用[Serializable]标记标记该类。

答案 2 :(得分:0)

您从数据库页面检索的数据是特定的,用户特定的还是全局的?

如果数据是用户特定的,您可以使用Session State

如果数据是整个应用程序的全局数据,您可以使用Application State

无论您使用哪种方式,都可以在Session_Start中实现数据检索(每个用户仅调用一次)或Application_Start(在Web应用程序启动时仅调用一次)事件一个Global.asax文件。