我在页面加载中生成一些头部html,因此我查询数据库一次。在页面中我再次查询数据库并使用内联代码将数据放入html。
我的问题是有更好的方法吗?我不希望每次查询数据库并从内联代码中获取那些填充的变量。像page_load中的page.addVariable之类的内容,并且像内容一样触及内容,例如page.variables [“variablename”]
提前致谢
答案 0 :(得分:3)
如果我理解你的要求,你可以制作一个存取器并将其设置为受保护。这将允许您从页面访问它。
如果要阻止在回调上调用数据库,可以始终将信息添加到页面上的视图状态。
有关视图状态,隐藏字段和Cookie的信息: http://www.csharphelp.com/archives/archive207.html
答案 1 :(得分:1)
我不确定这是否是您所追求的,但您可以使用HiddenField
在页面上存储您想要的任何数据。
此外,如果您不需要它在页面上,则可以使用Session或ViewState。
以下是使用ViewState作为属性的示例(注意。您可以将ViewState与Session交换,查看我给你的链接以获取两者之间的解释):
public string YourProperty
{
get
{
object content = ViewState["YourProperty"];
if (content == null)
{
return string.Empty;
}
return content.ToString();
}
set
{
ViewState["YourProperty"] = value;
}
}
请注意,您放入ViewState
或SessionState
的所有内容都必须标记为可序列化。
如果它是一个非常简单的类,只需使用[Serializable]
标记标记该类。
答案 2 :(得分:0)
您从数据库页面检索的数据是特定的,用户特定的还是全局的?
如果数据是用户特定的,您可以使用Session State。
如果数据是整个应用程序的全局数据,您可以使用Application State。
无论您使用哪种方式,都可以在Session_Start
中实现数据检索(每个用户仅调用一次)或Application_Start
(在Web应用程序启动时仅调用一次)事件一个Global.asax文件。