我正在尋找一些想法,最好堅持在多個頁面請求的對象,而無需使用會話變量,餅乾,上下文高速緩存,視圖狀態或會話的數據庫。思路持久性方法
我有一個web表單(CSS)將包含,將作爲「頁」幾個用戶控件,這些控件將被顯示在一在一次一個的方式:
<uc1:UserControl1 id="controlStep1" runat="server" visible="true" />
<uc2:UserControl2 id="controlStep2" runat="server" visible="false" />
<uc3:UserControl3 id="controlStep3" runat="server" visible="false" />
我有一個對象,我用它來包含各種參數。這些參數作爲查詢字符串值進入應用程序,並且此對象懶加載它們。例如:
public class Situation
{
private string _jobId;
private JobType _jobType;
public string JobId
{
get
{
if (!String.IsNullOrWhitespace(_jobId))
return _jobId;
_jobId = GetFromQueryString("jid");
return _jobId;
}
}
public JobType JobType
{
get
{
if (_jobType != JobType.Default)
return _jobType;
_jobType = GetEnumFromQueryString("jtype", typeof(JobType));
return _jobType;
}
}
}
我想堅持這種局面對象,而客戶是在Web應用程序,通過嚮導式的界面依照如用戶控件的可見性的切換。目前,我在客戶的第一個請求期間在HttpModule中創建一個Situation對象的實例,並將其存儲在HttpContext.Current.Items中,但我想使用延遲加載,以便各種情境對象屬性僅爲根據需要加載。然而,如果例如在controlStep1上訪問屬性,我想持久化對象的狀態,以便如果在controlStep2上訪問同一個屬性,則getter不必返回查詢字符串以獲取要求物業的價值。我可以序列化對象並在HttpModule中反序列化,但是如果訪問和加載屬性,則在下一個請求中不會記住它。
有什麼建議嗎?
你應該解釋你對持久狀態的標準機制(Session,Cache,...)有什麼不同。 – Joe 2010-07-19 16:19:35
查看狀態=>大小管理, Cookie =>可能會被用戶禁用, Session =>策略 - 不在我手中:) – Bullines 2010-07-19 16:22:08
這個問題似乎與「我想建立一個ASP.NET網站,不想使用ASP.NET「。這有點傻。 – Steven 2010-07-19 16:22:23