iT邦幫忙

DAY 29
2

Kuick Application & ORM Framework系列 第 31

Kuick -- 網頁資料傳遞

網頁前端參數值透過 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


上一篇
Kuick -- 欄位資料驗證
下一篇
Kuick -- 內建服務定義
系列文
Kuick Application & ORM Framework34

1 則留言

我要留言

立即登入留言