【问题标题】:ASP.NET postback and back buttonASP.NET 回发和返回按钮
【发布时间】:2012-04-10 01:56:16
【问题描述】:

对不起,如果这被证明是一个骗局。我找不到任何与我的问题完全相似的东西。

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

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

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

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

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

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

准备好了吗?去...

【问题讨论】:

  • 我只是利用那里的验证代码/设计来避免冗长的代码编写。现在我已经把这个目标吹走了。我可以更改设计以使用自定义验证器和客户端脚本...?????

标签: asp.net caching postback back-button


【解决方案1】:

你试过了吗:

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

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

【讨论】:

  • 是的。没有帮助。输出已被缓存,因此提交按钮单击中的控件没有更改被推送到缓存。后退按钮只是显示最后一个缓存的状态。
  • 我想知道您是否可以在单击提交按钮时清除缓存。我不能说我确定这是否可行,只是一个建议.. 投票赞成你的问题。
【解决方案2】:

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

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

<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);

【讨论】:

  • 也尝试设置这个:Response.Cache.SetNoStore();
猜你喜欢
  • 2020-11-21
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2013-09-27
  • 2011-02-15
  • 1970-01-01
  • 2011-06-14
  • 2012-12-13
相关资源
最近更新 更多