Cookies、Session、Request是專門針對WEB項目的額外支持。服務器
順便說下,今天有園友在羣裏問到ORM對MVC的支持。或者對WinForm支持嗎?對於ORM來講,自己是對錶現層沒有任何的聯繫。它僅僅是讓你在開發的時候,能以面向對象的思想(語法)去作交互。cookie
不過做者長期主要在WebForm上作開發,因此對Web上的服務器控件支持的比較多而已。因此這裏你們不須要擔憂。session
好,回到正題,Farseer對Cookies、Session、Request進行了二次封裝,固然這些封裝主要是爲了提供更多的一些使用上的靈活而封裝的。app
它們均在命名空間:FS.Utils.Web 中。框架
1 /// <summary> 2 /// Cookies工具 3 /// </summary> 4 public abstract class Cookies 5 { 6 /// <summary> 7 /// 寫cookie值 8 /// </summary> 9 /// <param name="strName">名稱</param> 10 /// <param name="strValue">值</param> 11 public static void Set(string strName, object strValue, bool isAddPrefix = true); 12 13 /// <summary> 14 /// 寫cookie值 15 /// </summary> 16 /// <param name="strName">名稱</param> 17 /// <param name="value">值</param> 18 /// <param name="expires">過時時間(分鐘)</param> 19 public static void Set(string strName, object value, int expires, bool isAddPrefix = true); 20 21 /// <summary> 22 /// 讀cookie值 23 /// </summary> 24 /// <param name="strName">名稱</param> 25 /// <returns>cookie值</returns> 26 public static string Get(string strName, bool isAddPrefix = true); 27 28 /// <summary> 29 /// 讀cookie值 30 /// </summary> 31 /// <param name="strName">名稱</param> 32 /// <param name="defValue">默認值</param> 33 /// <returns>cookie值</returns> 34 public static T Get<T>(string strName, T defValue, bool isAddPrefix = true); 35 36 /// <summary> 37 /// 移除cookie值 38 /// </summary> 39 /// <param name="strName">名稱c</param> 40 /// <returns></returns> 41 public static void RemoveCookie(string strName, bool isAddPrefix = true); 42 }
若是使用Cookies託管,必需要了解到的是由Cookies託管的Cookies都被設置了Cookies前綴。這是由System.config配置文件中的Cookies_Prefix進行設置的。默認是有前綴的。若是發現系統的與Farseer提供的Cookies沒法兼容,則主要緣由是前綴的問題。工具
1 /// <summary> 2 /// Session工具 3 /// </summary> 4 public abstract class Sessions : IRequiresSessionState 5 { 6 /// <summary> 7 /// 從 Session 讀取 鍵爲 name 的值 8 /// </summary> 9 /// <param name="name">SessionID</param> 10 public static string Get(string name, bool isAddPrefix = true); 11 12 /// <summary> 13 /// 從 Session 讀取 鍵爲 name 的值 14 /// </summary> 15 /// <param name="strName">SessionID</param> 16 /// <param name="defValue">爲空時返回的值</param> 17 public static T Get<T>(string strName, T defValue, bool isAddPrefix = true); 18 19 /// <summary> 20 /// 向 Session 保存 鍵爲 name 的, 值爲 value 21 /// </summary> 22 /// <param name="name">SessionID</param> 23 /// <param name="value">插入的值</param> 24 public static void Set(string strName, object value, bool isAddPrefix = true); 25 26 /// <summary> 27 /// 從 Session 刪除 鍵爲 name session 項 28 /// </summary> 29 /// <param name="name">SessionID</param> 30 public static void Remove(string strName, bool isAddPrefix = true); 31 32 /// <summary> 33 /// 刪除全部 session 項 34 /// </summary> 35 public static void RemoveAll(); 36 }
1 /// <summary> 2 /// Request操做類 3 /// </summary> 4 public abstract class Req 5 { 6 /// <summary> 7 /// 請求類型 8 /// </summary> 9 public enum SubmitType 10 { 11 /// <summary> 12 /// Get 13 /// </summary> 14 Get = 0, 15 16 /// <summary> 17 /// Post 18 /// </summary> 19 Post = 1, 20 21 /// <summary> 22 /// Get 和 Post (Post優先) 23 /// </summary> 24 All = 255 25 } 26 27 /// <summary> 28 /// 獲取當前應用程序訪問的完整路徑信息 29 /// http://localhost:1480/WebSite2/Default.aspx?UserID=1 30 /// </summary> 31 /// <returns></returns> 32 public static string GetUrl() 33 34 /// <summary> 35 /// 獲取當前應用程序訪問的域名(帶端口) 36 /// www.xxx.com:81 37 /// </summary> 38 /// <param name="node">要獲取第幾個節點,0:不限制</param> 39 public static string GetDomain(int node = 3) 40 41 /// <summary> 42 /// 獲取當前應用程序訪問的路徑(不帶域名、不帶頁面文件名、URL重寫地址的真實路徑) 43 /// /Manage/ 44 /// </summary> 45 public static string GetTruePath() 46 47 /// <summary> 48 /// 獲取當前應用程序訪問的路徑(不帶域名、不帶頁面文件名) 49 /// /Manage/ 50 /// </summary> 51 public static string GetPath() 52 53 /// <summary> 54 /// 獲取當前應用程序訪問的頁面文件名稱(不帶參數) 55 /// Default.aspx 56 /// </summary> 57 public static string GetPageName() 58 59 /// <summary> 60 /// 獲取當前應用程序訪問的參數 61 /// </summary> 62 public static string GetParams() 63 64 /// <summary> 65 /// 解析成參數字符串 66 /// </summary> 67 /// <param name="dic"></param> 68 /// <returns></returns> 69 public static string ParseParams(Dictionary<string, string> dic) 70 71 /// <summary> 72 /// 上一個頁面地址 73 /// </summary> 74 public static string GetPrevious() 75 76 /// <summary> 77 /// 判斷當前頁面是否接收到了提交請求 78 /// </summary> 79 public static bool IsSubmit(SubmitType submitType = SubmitType.Post) 80 81 /// <summary> 82 /// 返回指定的服務器變量信息 83 /// </summary> 84 /// <param name="strName">服務器變量名</param> 85 /// <returns>服務器變量信息</returns> 86 public static string GetServerString(string strName) 87 88 /// <summary> 89 /// 獲得當前完整主機頭 90 /// </summary> 91 /// <returns></returns> 92 public static string GetCurrentFullHost() 93 94 /// <summary> 95 /// 獲得主機頭 96 /// </summary> 97 /// <returns></returns> 98 public static string GetHost() 99 100 /// <summary> 101 /// 判斷是否來自搜索引擎連接 102 /// </summary> 103 /// <returns>是否來自搜索引擎連接</returns> 104 public static bool IsSearchEnginesGet() 105 106 /// <summary> 107 /// 返回表單或Url參數的總個數 108 /// </summary> 109 /// <returns></returns> 110 public static int GetParamCount() 111 112 /// <summary> 113 /// Request.QueryString 114 /// </summary> 115 public static string QS(string parmsName) 116 117 /// <summary> 118 /// Request.QueryString 119 /// </summary> 120 public static T QS<T>(string parmsName, T defValue) 121 122 /// <summary> 123 /// Request.QueryString 124 /// </summary> 125 public static string QS(string parmsName, Encoding encoding) 126 127 /// <summary> 128 /// Request.QueryString 129 /// </summary> 130 public static T QS<T>(string parmsName, T defValue, Encoding encoding) 131 132 /// <summary> 133 /// Request.Form 134 /// </summary> 135 public static string QF(string parmsName) 136 137 /// <summary> 138 /// Request.Form 139 /// </summary> 140 public static T QF<T>(string parmsName, T defValue) 141 142 /// <summary> 143 /// 先QF後QS 144 /// </summary> 145 /// <param name="parmsName"></param> 146 /// <returns></returns> 147 public static string QA(string parmsName) 148 149 /// <summary> 150 /// 先QF後QS 151 /// </summary> 152 /// <param name="parmsName"></param> 153 /// <returns></returns> 154 public static T QA<T>(string parmsName, T defValue) 155 156 /// <summary> 157 /// 得到當前頁面客戶端的IP 158 /// </summary> 159 /// <returns>當前頁面客戶端的IP</returns> 160 public static string GetIP() 161 162 /// <summary> 163 /// 判斷當前訪問是否來自瀏覽器軟件 164 /// </summary> 165 /// <returns>當前訪問是否來自瀏覽器軟件</returns> 166 public static bool IsBrowserGet() 167 168 /// <summary> 169 /// 判斷是否有上傳的文件 170 /// </summary> 171 /// <returns>是否有上傳的文件</returns> 172 public static bool IsPostFile() 173 174 /// <summary> 175 /// 保存用戶上傳的文件 176 /// </summary> 177 /// <param name="path">保存路徑</param> 178 public static void SaveRequestFile(string path) 179 180 /// <summary> 181 /// Post信息 182 /// </summary> 183 public static string Post(HttpClient wc, string url, string data, Encoding encoding = null) 184 185 /// <summary> 186 /// 獲取端口 187 /// </summary> 188 /// <returns></returns> 189 public static int GetPort() 190 191 /// <summary> 192 /// 把服務器返回的Cookies信息寫入到客戶端中 193 /// </summary> 194 public static void WriteCookies(HttpClient wc) 195 196 /// <summary> 197 /// 記住用戶最後一次訪問地址 198 /// </summary> 199 public static void RememberUrl() 200 201 /// <summary> 202 /// 轉到網址 203 /// </summary> 204 public static void GoToUrl(string url, params object[] args) 205 206 /// <summary> 207 /// 轉到網址(默認爲最後一次訪問) 208 /// </summary> 209 public static void GoToUrl(string url = "") 210 211 /// <summary> 212 /// 把提交過來的內容轉化成爲實體類(注意CheckBox 未選中時,是NULL,須要手動判斷) 213 /// </summary> 214 /// <param name="request">NameValueCollection</param> 215 /// <param name="prefix">控件前綴</param> 216 /// <param name="tip">彈出框事件委託</param> 217 /// <param name="url">跳轉地址</param> 218 public static TInfo Fill<TInfo>(NameValueCollection request, Action<string, string> tip = null, string url = "", 219 string prefix = "hl") where TInfo : ModelInfo, new() 220 221 /// <summary> 222 /// 把提交過來的內容轉化成爲實體類(注意CheckBox 未選中時,是NULL,須要手動判斷) 223 /// </summary> 224 /// <param name="request">NameValueCollection</param> 225 /// <param name="prefix">控件前綴</param> 226 /// <param name="tip">彈出框事件委託</param> 227 public static TInfo Fill<TInfo>(NameValueCollection request, Action<Dictionary<string, List<string>>> tip, 228 string prefix = "hl") where TInfo : ModelInfo, new() 229 230 /// <summary> 231 /// 把提交過來的內容轉化成爲實體類(注意CheckBox 未選中時,是NULL,須要手動判斷) 232 /// </summary> 233 /// <param name="request">NameValueCollection</param> 234 /// <param name="prefix">控件前綴</param> 235 /// <param name="dicError">返回錯誤消息,key:屬性名稱;value:錯誤消息</param> 236 public static TInfo Fill<TInfo>(NameValueCollection request, out Dictionary<string, List<string>> dicError, string prefix = "hl") where TInfo : ModelInfo, new() 237 }
這裏有有不少方法,我在這裏就不一一說明了。其中QS/QF/QA在上幾篇文章中已經說明過了。由於它很是經常使用,因此我在這裏在囉嗦一下。ui
QS全稱是:Request.QueryString
QF全稱是:Request.Form
QA:先執行QF,若是沒有取到值,再執行QA
在這裏進行了二次封裝的目的是加入了泛型的支持,不少時候咱們在獲取值的時候(Request.Form[""]、Request.QueryString[""])須要先判斷是否爲null值。而後再進去值的轉換(好比轉到int/bool/datetime)。
使用QS/QF/QA 則能夠經過兩個參數進行以上的操做:QS("ID",0) 第1個參數是參數名稱、第2個參數是默認值。當轉換失敗,好比爲Null值或者爲非數字的字符串時,則返回0。經過這個0,咱們也能夠肯定爲int類型 因此整個返回的是INT類型。
基本上做者都沒有使用原生的以上提到的這些功能了,都是使用了框架提供的方法。在使用的過程當中,你們會發覺代碼量的開發明顯減小。
QQ羣:116228666 (Farseer.net開源框架交流) 請註明:Farseer.Net
Farseer.Net是一款ORM框架 + 經常使用工具 + 擴展集合。
Farseer 意爲:先知、預言家 一般在某些場合時,提供計謀、策略。也但願該框架能給你們提供最大化的便捷。
ORM:其英文全稱是:Object(對象) Relational(關係) Mapping(映射)
Farseer.Net的目標是:快速上手、快速開發、簡單方便。
1 new User { ID = 1, Name = "張三" }.Insert()