分享人:王炳鈞
1. 簡單的驗證
應用場景:若需要在頁面解鎖某一段航班,點擊解鎖按鈕時客戶端js檢驗當前航班輸入數據是否合法,若合法則進行數據庫操作,若不合法,則停止。
常用ajax
響應服務器的方法,在該button的onclick方法中校驗是否合法,若返回true,則調用后臺處理函數。若返回false,則不執行后臺方法。
image.png
如果左邊return false 作為驗證 右邊則不執行。
2. LINQ中TakeWhile&SkipWhile
image.png
在用TakeWhile,SkipWhile前,先看一看常用的Take和Skip:
public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);
Take將枚舉出source中的前count個元素,返回給客戶端.
Skip 則恰好相反,將跳過source中的前count個元素,枚舉其余元素
TakeWhile 和 SkipWhile:
數據源
static List<Customer> customers = new List<Customer> {
new Customer { CustomerID=1,Name="woody1"},
new Customer { CustomerID=2,Name="woody2"},
new Customer { CustomerID=3,Name="woody3"},
new Customer { CustomerID=4,Name="woody1"}
};
在這個數據源的基礎上,進行如下操作:
var cs1 = customers.TakeWhile(c => c.Name == "woody1");
var cs2 = customers.TakeWhile(c => c.Name == "woody2");
var cs3 = customers.SkipWhile(c => c.Name == "woody1");
var cs4 = customers.SkipWhile(c => c.Name == "woody2");
問題:cs1--cs4這四個IEnumerable<Customer>變量中都保存著些什么元素?
正確答案:
cs1 :woody1(CustomerID=1)
cs2 : 沒有任何元素
cs3 :woody2 , woody3 , woody1(CustomerID=4)
cs4 :woody1(CustomerID=1),woody2,woody3,woody1(CustomerID=4)
TakeWhile對數據源進行枚舉,從第一個開始判斷,若返回true,則將該元素返回給客戶端,并且繼續向下進行枚舉。但是,一旦值返回false的話,枚舉就此打住,忽略剩下的所有元素。
SkipWhile也對數據源進行枚舉, 從第一個開始判斷, 若返回true,則跳過該元素,繼續進行枚舉操作。但是,一旦值返回為false,則該元素以后的所有元素,都不會再進行判斷,而全部顯示。
應用場景:業務部門根據備降航班來導出備降航班前后航班信息。查詢某天所有航班信息,若有備降航班,則將起飛時間早于該航班的航班數據作為一個文件導出,來獲取多個表格。