求助,如何让动态添加的控件只在当前操作中显示,下下次不再显示
以下是我在App_Code中写的给客户端发送信息的Message类:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public class Message
{
private string m_title;
private string m_description;
public Message()
{
}
public Message(string title, string description)
{
m_title = title;
m_description = description;
}
public string Title
{
get
{
return m_title;
}
set
{
m_title = value;
}
}
public string Description
{
get
{
return m_description;
}
set
{
m_description = value;
}
}
public void ShowInDialog()
{
JScript.Alert(m_description);
}
public void ShowInWebPage(string url)
{
string msgUrl = url;
msgUrl += "?title= " + m_title;
msgUrl += "&descript= " + m_description;
string encodeUrl = HttpUtility.UrlEncode(msgUrl);
System.Web.HttpContext.Current.Response.Redirect(encodeUrl);
}
public void ShowInWebPage()
{
ShowInWebPage( "~/Message.aspx ");
}
public void ShowInControl(System.Web.UI.WebControls.WebControl ctrl)
{
System.Web.UI.WebControls.Literal LiteralMessage = new System.Web.UI.WebControls.Literal();
LiteralMessage.Text = HttpUtility.HtmlEncode(m_title + ": " + m_description);
LiteralMessage.ID = "LiteralMessage ";
LiteralMessage.EnableViewState = false;
ctrl.Controls.Add(LiteralMessage);
}
}
在登录页面调用如下:
if (Membership.ValidateUser(tbUserName.Text, tbPassword.Text))
{
FormsAuthentication.RedirectFromLoginPage(tbUserName.Text, chkbxRememberMe.Checked);
}
else
{
Message msg = new Message();
msg.Title = "登录失败 ";
msg.Description = "用户名或密码错误,请重新登录 ";
msg.ShowInControl(PanelMessage); //PanelMessage为asp:Panel控件
}
不过在刷新该页面或登录成功后,该消息仍然存在,我将PanelMessage的EnableViewState设为false都没用
[解决办法]
.net本身要实现状态的保持,也就是缓存了上次提交后的状态,这个是用ViewState实现的.
可以写程序,在Page_load后,直接设置Message为空.或设置ViewState禁止使用.