如果班級應該首先存儲在會話中,陪審團仍然沒有。有了這個應用程序,我問了這個問題,我選擇了不把課程填入會話中,這真的沒有必要,我很懶。使用這種方法來管理會話總是值得的,因爲它在web開發中困擾了我一段時間。
我的研究結果是編寫一個靜態類來管理我的會話變量。這個類處理對會話的所有讀寫操作,並保持它們全部強類型以便引導。它一直困擾着我使用重複的代碼遍佈全球的會話廢話。也保持拼寫錯誤的方式。
有兩篇我喜歡的文章,我現在只能找到其中的一篇文章,當我找到它時會包含其他文章。
第一次是在Code Project 這可以是第二link
的圖案是簡單和直接的。我還爲從url查詢字符串獲取參數的請求構建了一個類。我沒有理由不把它擴展到cookies。
這是我第一次使用模式,我只使用字符串,所以私有方法有點有限,但可以很容易地將其更改爲使用任何類或基本類型。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
namespace BDZipper.Site
{
/// <summary>
/// This class maintains all session variables for us instead of handeling them
/// individually in the session. They are also strongly typed.
/// </summary>
public static class SessionManager
{
# region Private Constants
// Define string constant for each property. We use the constant to call the session variable
// easier not to make mistakes this way.
// I think for simplicity, we will use the same key string in the web.config AppSettings as
// we do for the session variable. This way we can use the same constant for both!
private const string startDirectory = "StartDirectory";
private const string currentDirectory = "CurrentDirectory";
# endregion
/// <summary>
/// The starting directory for the application
/// </summary>
public static string StartDirectory
{
get
{
return GetSessionValue(startDirectory, true);
}
//set
//{
// HttpContext.Current.Session[startDirectory] = value;
//}
}
public static string CurrentDirectory
{
get
{
return GetSessionValue(currentDirectory, false);
}
set
{
HttpContext.Current.Session[currentDirectory] = value;
}
}
//TODO: Update to use any class or type
/// <summary>
/// Handles routine of getting values out of session and or AppSettings
/// </summary>
/// <param name="SessionVar"></param>
/// <param name="IsAppSetting"></param>
/// <returns></returns>
private static string GetSessionValue(string SessionVar, bool IsAppSetting)
{
if (null != HttpContext.Current.Session[SessionVar])
return (string)HttpContext.Current.Session[SessionVar];
else if (IsAppSetting) // Session null with appSetting value
return ConfigurationManager.AppSettings[SessionVar];
else
return "";
}
}
}