egentlig ikke rigtig ... du kan få en sessionvariable indtil videre ;o)
(det er bare for at vise princippet)
// aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="
http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="lblValue" runat="server"></asp:Label>
<br />
<asp:Button ID="btnPostBack" runat="server" OnClick="btnPostBack_Click" />
</form>
</body>
</html>
// og koden:
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 partial class _Default : System.Web.UI.Page
{
private SessionVariable<int> m_SomeNumber = new SessionVariable<int>("name");
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
m_SomeNumber.Value = 100;
ShowValue();
}
}
protected void btnPostBack_Click(object sender, EventArgs e)
{
m_SomeNumber.Value++;
ShowValue();
}
private void ShowValue()
{
lblValue.Text = m_SomeNumber.Value.ToString();
}
}
public class SessionVariable<T>
{
private string m_Name;
private Page m_PageInstance;
public T Value
{
get
{
SetPageInstance();
return (T)m_PageInstance.Session[m_Name];
}
set
{
SetPageInstance();
m_PageInstance.Session[m_Name] = value;
}
}
public SessionVariable(string name)
{
m_Name = name;
}
private void SetPageInstance()
{
m_PageInstance = HttpContext.Current.Handler as Page;
if (m_PageInstance == null)
throw new ApplicationException("...");
}
}
... ikke ligefrem produktionskode, men jeg håber det viser et eller andet.
mvh