您的位置:首页 > 编程语言 > ASP

两个页面之间的传值提醒

2015-07-30 01:33 686 查看
曾经这个问题令我很为难,因为至今我所学习的传值方式也就是那五种,①Response这种传值方式特别稳,特别经典,真的无可挑剔。但是我所跳转的页面与传值的页面并不是同一页面,所以就没办法了。②Server.transfer这种传值我就从来没用过,哪个大神能够教教我呢,哎③cookies,sessions,applications——其实这三种特别像,尤其是get的时候语句很相似,我偏爱session,当然,在不考虑生命周期的情况下session也算较好用的了。总而言之,我说说我遇上的问题吧。

那是一个这样的页面——页面上有三个下拉框,每个下拉框可以选择一个值,根据三个下拉框得出的值,会出现相应的问题供用户填充,用户都填好后,该表单会被录入数据库,因此这个页面的传值方式是不可动摇的(我觉得……反正我是不想整动),然而,我要做的功能即是在点击这个按钮之后,后台管理页面会出现相应的提醒。

这个问题我问过,有人说是使用socket解决,实际上socket解决的是服务端与客户端之间的通信问题,而我的两个页面实际都在ASP.NET的客户端,我觉得没有必要,于是我尝试使用我自己所熟知的cookies,sessions,applications,我甚至还查过我的灵魂导师《C#图解教程》以为会用到什么异步编程……然而并没有。我使用的方法是AJAX,ASP.NET的AJAX很容易就想到ScriptManager控件,我利用该控件制作了一个提醒页脚。设置timer每十秒刷新,若有session传值则提示。

局部关键代码:

点击按钮提交用户模型(即用户材料),并记录session中

protected void Button1_Click(object sender, EventArgs e)
{
UserModel model = new UserModel();
model.UserName = "Peter";
Session["UserModel"] = model;
}

管理后台页面代码
WebForm2.aspx:

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="10000" />
<asp:UpdatePanel ID="StockPricePanel" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Info" runat="server" Text=""></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<div>
Page originally created at <asp:Label ID="OriginalTime" runat="server"></asp:Label>
</div>
</form>

WebForm2.aspx.cs:
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
OriginalTime.Text = DateTime.Now.ToLongTimeString();
}
protected void Timer1_Tick(object sender, EventArgs e)
{
if (Session["UserModel"] != null)
Info.Text += DateTime.Now + "你有一条新消息!<br />";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息