0

我有如下表格:

<form id="form1" runat="server">
<div>
    <asp:PlaceHolder ID="plcHolder" runat="server">        
    </asp:PlaceHolder>

    <asp:Button ID="btnSubmit" Text="submit" runat="server" 
        onclick="btnSubmit_Click" />
</div>
</form>

这是我的代码:

protected string FetchDataFromDatabase()
{
    return "some long string";
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    { 
        this.plcHolder.Controls.Add(new Label() { Text = FetchDataFromDatabase() } );
    }
}

Page_Load()从数据库中获取一个长字符串。

protected void btnSubmit_Click(object sender, EventArgs e)
{
    this.plcHolder.Controls.Add(new Label() { Text = "new text" });
}

Button将新文本添加到我的页面。但是,当我单击按钮时,我只看到字符串“新文本”,但我正在寻找两个文本(“一些长字符串新文本”)。

我不想在每次单击按钮时调用我的数据库,因为文本已经加载到页面中。我如何实现这一目标?

我知道这个例子看起来有点奇怪,这是因为我试图给出最小的工作示例。

4

1 回答 1

0

在加载中,当你从数据库中获取值时,将其存储在 Session 中:

Session["textFromDatabase"] = GetTextFromDatabase();

然后在这两个地方利用该价值。因此,如果您在点击中,您会说:

... Text = Session["textFromDatabase"] + " new text";

现在您可以在不是回发时从数据库中获取值,就像您所说的那样,但可以一遍又一遍地利用它。

而且我很确定,根据您所说,这与您想要的条件相反,抛出一个!在它面前:

if (Page.IsPostBack)
于 2013-04-12T17:23:28.353 回答