標籤:
看代碼,看註解,看懂了單詞,沒看懂意思。
今日只能專攻一下這項特性。
1、Remote
在看這個例子的時候 ,看了JsonResult 以及 JsonRequestBehavior.AllowGet解釋如下
http://www.cnblogs.com/lmfeng/p/3596175.html
http://www.cnblogs.com/lushuicongsheng/archive/2012/07/31/2617032.html
2、base和this
訪問
base關鍵字用於從衍生類別中訪問基類的成員:調用基類上已被其他方法重寫的方法。指定建立衍生類別執行個體時應調用的基類建構函式。基類訪問只能在建構函式、執行個體方法或執行個體屬性訪問器中進行。
base常用於,在衍生類別對象初始化時和基類進行通訊。
• base可以訪問基類的公有成員和受保護的成員,私人成員是不可訪問的。
• this指代類對象本身,用於訪問本類的所有常量、欄位、屬性和方法成員,而且不管訪問元素是任何存取層級。因為,this僅僅局限於對象內部,對象外部是無法看到的,這就是this的基本思想。另外,靜態成員不是對象的一部分,因此不能在靜態方法中引用this。
• 在多層繼承中,base可以指向的父類的方法有兩種情況:一是有重載存在的情況下,base將指向直接繼承的父類成員的方法,例如Audi類中的ShowResult方法中,使用base訪問的將是Car.ShowResult()方法,而不能訪問Vehicle.ShowResult()方法;而是沒有重載存在的情況下,base可以指向任何上級父類的公有或者受保護方法,例如Audi類中,可以使用base訪問基類Vehicle.Run()方法。這些我們可以使用ILDasm.exe,從IL代碼中得到答案。
• 盡量少用或者不用base和this。除了決議子類的名稱衝突和在一個建構函式中調用其他的建構函式之外,base和this的使用容易引起不必要的結果。
• 在靜態成員中使用base和this都是不允許的。原因是,base和this訪問的都是類的執行個體,也就是對象,而靜態成員只能由類來訪問,不能由對象來訪問。
• base是為了實現多態而設計的。
• 使用this或base關鍵字只能指定一個建構函式,也就是說不可同時將this和base作用在一個建構函式上。
• 簡單的來說,base用於在衍生類別中訪問重寫的基類成員;而this用於訪問本類的成員,當然也包括繼承而來公有和保護成員。
• 除了base,訪問基類成員的另外一種方式是:顯示的類型轉換來實現。只是該方法不能為靜態方法。
3、建構函式的必要性
class User{ public string CreateTime { get; private set; } public User() { this.CreateTime = DateTime.Now; }}這個簡單的例子作用是當new User()的時候自動產生了CreateTime。在語言層面,你完全可以沒有任何建構函式,然後這麼做:
var user = new User();user.CreateTime = DateTime.Now;
這樣產生的user對象是一樣的。但是從設計方面,後一種做法把CreateTime的賦值工作交給了調用者,這樣的程式就依賴“調用者的素質”,比如,調用者不知道要給這個欄位賦值,或者胡亂賦值,等等。因此是很不同的。
4、Validation
ValidationResult 類,表示 ValidationRule 返回的結果。指示選中值是否通過 ValidationRule 的 Validate 方法。
ValidationRule 類,提供一種為檢查使用者輸入的有效性而建立自訂規則的方法。
abstract 修飾符,指示所修飾的內容缺少實現或未完全實現。 abstract 修飾符可用於類、方法、屬性、索引器和事件。 在類聲明中使用 abstract 修飾符以指示某個類只能是其他類的基類。 標記為抽象或包含在抽象類別中的成員必須通過從抽象類別派生的類來實現。
ValidationContext 類描述執行驗證檢查的類。
validationContext.DisplayName擷取或設定要驗證的成員的名稱
C# asp.net mvc 註解驗證