🚫 Ad Blocker Detected

Please disable your AD blocker to continue using this site. Ads help us keep the content free! please press keyboard F5 to refresh page after disabled AD blocker

請關閉廣告攔截器以繼續使用本網站。廣告有助於我們保證內容免費。謝謝! 關閉後請按 F5 刷新頁面

0%

Agenda

前言

CachedDataAnnotationsMetadataAttributes這個類別攔截某些標籤可被攔截驗證.

本篇會介紹另一個可以客製化驗證ValidationAttribute,常用驗證標籤並講述是如何參數屬性是如何取得這個標籤和使用過程.

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

ValidationAttribute

ValidationAttribute類別在System.ComponentModel.DataAnnotations命名空間下.

我們可以建立一個類別繼承ValidationAttributebool IsValid(object value)重載方法來製做我們客制化驗證機制.

IsValid方法有一個Bool回傳值回傳true代表驗證通過false反之

Read more »

Agenda

前言

上一篇有介紹ModelMetadata和參數Model之間的關係.

UML_Model

MVC提供我們一個IMetadataAware介面,讓我們可以對最終生成ModelMetadata進行自由設定.

IMetadataAware介面

IMetadataAware介面有一個OnMetadataCreated方法

1
2
3
4
public interface IMetadataAware
{
void OnMetadataCreated(ModelMetadata metadata);
}

MVC有預設兩個實現IMetadataAware介面的標籤.

Read more »

Agenda

前言

上一篇有介紹ModelMetadata和參數Model之間的關係.

UML_Model

MVC提供我們一個IMetadataAware介面,讓我們可以對最終生成ModelMetadata進行自由設定.

IMetadataAware介面

IMetadataAware介面有一個OnMetadataCreated方法

1
2
3
4
public interface IMetadataAware
{
void OnMetadataCreated(ModelMetadata metadata);
}

MVC有預設兩個實現IMetadataAware介面的標籤.

Read more »

Agenda

前言

IValueProvider物件透過一個ValueProviderFactory工廠來產生

Action方法綁定Model参数由實現IModelBinder的介面ModelBinder(DefaultModelBinder)物件來實現

IModelBinder介面中有一個重要的方法object BindModel取得Model參數資料.

但在Http請求傳送參數極為複雜是如何將參數動態綁定在Action參數上呢?

最常見的Json參數透過POST Body傳到AP端,經由MVC BindModel來取得參數物件資料.

如下方資料.

1
2
3
4
5
{
"Key":"123",
"value":"",
"Adress":["test133","e2424"]
}
Read more »

Agenda

前言

IValueProvider物件透過一個ValueProviderFactory工廠來產生

Action方法綁定Model参数由實現IModelBinder的介面ModelBinder(DefaultModelBinder)物件來實現

IModelBinder介面中有一個重要的方法object BindModel取得Model參數資料.

但在Http請求傳送參數極為複雜是如何將參數動態綁定在Action參數上呢?

最常見的Json參數透過POST Body傳到AP端,經由MVC BindModel來取得參數物件資料.

如下方資料.

1
2
3
4
5
{
"Key":"123",
"value":"",
"Adress":["test133","e2424"]
}
Read more »

Agenda

前言

MVCModel-Binding建立複雜物件(牽扯到複雜模型綁定.)

這篇會跟大家介紹MVC是如何把達成這個複雜的動作

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

IModelBinder(DefaultModelBinder)

DefaultModelBinder將Http請求傳來資料轉換為強型別物件,DefaultModelBinder是如何取得使用Model資料呢?

實現IValueProvider來處理。

ModelBinders

Read more »

Agenda

前言

MVCModel-Binding建立複雜物件(牽扯到複雜模型綁定.)

這篇會跟大家介紹MVC是如何把達成這個複雜的動作

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

IModelBinder(DefaultModelBinder)

DefaultModelBinder將Http請求傳來資料轉換為強型別物件,DefaultModelBinder是如何取得使用Model資料呢?

實現IValueProvider來處理。

ModelBinders

Read more »

Agenda

前言

上篇揭開MVC常用的過濾器如何被獲取呼叫跟基本介紹.

前幾篇有介紹ControllerDescriptor,ActionDescriptor兩個物件,今天會來細部探討他們裡面有哪些重要成員.

本篇會繼續分析呼叫Action方法邏輯和在過程中有用到重要物件跟動作.

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

ControllerActionInvoker方法 重要InvokeAction方法

前面有說ControllerActionInvoker類別最重要的就是InvokeAction方法,因為主要透過他去呼叫ActionResult抽象類別ExecuteResult方法.

InvokeAction有兩個參數

Read more »

Agenda

前言

上篇揭開MVC常用的過濾器如何被獲取呼叫跟基本介紹.

前幾篇有介紹ControllerDescriptor,ActionDescriptor兩個物件,今天會來細部探討他們裡面有哪些重要成員.

本篇會繼續分析呼叫Action方法邏輯和在過程中有用到重要物件跟動作.

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

ControllerActionInvoker方法 重要InvokeAction方法

前面有說ControllerActionInvoker類別最重要的就是InvokeAction方法,因為主要透過他去呼叫ActionResult抽象類別ExecuteResult方法.

InvokeAction有兩個參數

Read more »

Agenda

前言

上篇和大家介紹Filter去是如何取得且我們可以透過IOC容器註冊IFilterProvider來擴充取得Filter注入點.

ASP.NET MVCFilter,在執行目標前後彈性擴充額外操作(繼承ActionFilter並掛Attribute),這是一種典型的AOP設計模式

本篇會和大家繼續分享InvokeAction後續動作.

為什麼我們在Action方法和Controller類別放置一個繼承(AuthorizationFilter、ActionFilter、ResultFilter,ExceptionFilter)標籤(Attribute)對應介面(IAuthorizationFilter、IActionFilter、IResultFilter,IExceptionFilter),程式幫我們自動載入MVC生命週期中並執行?

我有做一個可以針對於Asp.net MVC Debugger的專案,只要下中斷點就可輕易進入Asp.net MVC原始碼.

揭密取得過濾器(Filter)機制AOP

AOP 是 OOP(物件導向)一個變化程式撰寫思想。(非取代OOP而是擴充)

Read more »