ASP.NET回发和后退按钮

时间:2012-03-26 14:39:13

标签: asp.net caching postback back-button

很抱歉,如果这是一个骗局。我找不到任何与我的问题完全相似的东西。

我在表单上有一个asp:标签。在提交按钮postaback上,我进行服务器端验证。如果失败,我将标签设置为某个文本值。

如果我提供有效信息并再次点击提交,我会将标签设置为空,作为提交点击的一部分,它会执行回发并显示新页面。

如果单击后退按钮,它会在表单和错误标签中显示正确的信息。

再次单击“提交”表示标签文本属性为空,尽管文本在屏幕上清晰可见。

我希望标签为空(实际上不可见)因为我在执行任何操作之前将其设置为空。

我尝试过使用Text属性和Visible属性,但结果相同。

准备好了吗? GO ...

2 个答案:

答案 0 :(得分:0)

你试过了吗?

protected void Page_Load(object sender, EventArgs e)
{
    lblMessage.Visible = false;
}

每次加载页面时,您的邮件都将不可见。因此,当您进行服务器端验证时,您可以设置标签的文本并设置Visibility = true。

答案 1 :(得分:0)

“如果我单击后退按钮,它会在表单和错误标签中显示正确的信息。” :没问题;它会显示您发布页面时的状态。

如果您不希望消息Label保留其可见或文本,则标记应为:

<asp:label id='myMsgLbl' runat='server' enableviewstate='false' visible='false/>'

- 修改

据我所知,后退按钮的行为符合预期。

也许您应该寻找允许禁用后退按钮的解决方案,

或禁用表单缓存(但我猜这个解决方案会比你的第一个问题更糟糕)

    private void Page_Load(object sender, System.EventArgs e)
    {
        Response.CacheControl = "no-cache";
        Response.AddHeader("Pragma", "no-cache");
        Response.Expires = -1;
        Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);