網頁前端參數值透過 POST, GET, Cookie 與後端溝通,前端傳來的值全是字串,後端承接資料的變數可能是各種型態,例如是 string, int, bool, DateTime, enum 甚至可能是某個 Entity 的 instance,每次後端承接這些值,除了需考慮來源為何,還需處理轉型與資料驗證,這類惱人的事,就交給 Kuick.Web.RequestParameterAttribute 幫忙吧!
Kuick.Web.RequestParameterAttribute 類別為使用於網站程式 property 不可重複的 Attribute,目前支援範圍包含:
1. Web Form,繼承 Kuick.Web.PageBase
Default.aspx.cs
using System;
using Kuick.Data;
using Kuick.Web;
public partial class _Default : PageBase
{
[RequestParameter("un", "會員代碼", RequestType.Cookies)]
[ValidationString(BoundaryString.LengthGreaterThan, 3)]
public string UserName { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
}
2. Web User Control,繼承 Kuick.Web.UserControlBase
WebUserControl.ascx.cs
using System;
using Kuick.Data;
using Kuick.Web;
public partial class WebUserControl : UserControlBase
{
[RequestParameter("un", "會員代碼", RequestType.Cookies)]
[ValidationString(BoundaryString.LengthGreaterThan, 3)]
public string UserName { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
}
3. Generic Handler,繼承 Kuick.Web.HandlerBase
Handler.ashx
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using Kuick.Data;
using Kuick.Web;
public class Handler : HandlerBase
{
[RequestParameter("un", "會員代碼", RequestType.Cookies)]
[ValidationString(BoundaryString.LengthGreaterThan, 3)]
public string UserName { get; set; }
public void ProcessRequest(HttpContext context)
{
}
}
<RequestParameterAttribute 參數>
首先說明承接來源 RequestType 列舉項目包含:
Query -- 來自 Query string 的資料
Form -- 來自 Form 的資料
Cookies -- 來自 Cookie 的資料
Any -- 來自 Query string 或是 Form 的資料
使用下面例子說明如何設定 RequestParameterAttribute
1. 以預設名稱承接變數值
這個例子,執行期將以 property 的名稱 UserName 作為承接變數名稱
[RequestParameter]
public string UserName { get; set; }
2. 自訂名稱承接變數值
這個例子,執行期將以定義的名稱 un 作為承接變數名稱
[RequestParameter("un")]
public string UserName { get; set; }
3. 自訂名稱承接變數值
這個例子,執行期將以定義的名稱 un 作為承接來自 Cookie 的變數名稱
[RequestParameter("un", "會員代碼", RequestType.Cookies)]
public string UserName { get; set; }
<實作自動承接變數值>
1. Web From
實作於 Kuick.Web.PageBase.RequestValidation_PreInit 方法
2. Web User Control
實作於 Kuick.Web.HandlerBase.ValidRequest 方法
3. Generic Handler
Kuick.Web.UserControlBase.OnInit 方法
這 3 個方法皆以下面順序設計這項功能:
1. 取得本程式有定義 RequestParameterAttribute 的 property 集合
2. 驗證資料
3. 承接變數值
========================================
鐵人賽分享列表:Kuick Application & ORM Framework
開放原始碼專案:kuick.codeplex.com
直接下載原始碼:Kuick
下載相關文件檔:C# Code Conventions and Design Guideline
相關教學影片區:Kuick on YouTube