本篇從案例開始,為了更好理解接口以及C#的知識,本篇拋開客戶端jQuery或是Javascript知識,也就是說ASP.NET與C#一起討論。
進入之前,你可以先細讀msdn文章《Cross-Page Posting in ASP.NET Web Pages》http://msdn.microsoft.com/en-us/library/ms178139(v=vs.110).aspx 或者論壇上一篇問題
《為什么我這個跨網頁傳遞一直報錯!未將對象實例化??》http://bbs.csdn.net/topics/390937410 。這兩篇均可以歸為同一類知識。但是它們有一個共同的地方,就是在目標頁中,去指定前一頁控件名稱,紅色箭頭指向高亮位置:
這里就是這次我們討論的重點,也就是說你不能把它寫死了。比如說,你(借方)有很多錢,借給了很多人(貸方),多少人不確定,現在你提醒或是他們要還你錢。因此借方不能只使用TextBox1去代表所有貸方。
貸方有可能是TextBox2,DropDownList3,RadioButtonList2,......等等
這樣你得在上面MSDN代碼示例中要寫上很多代碼,如:
現在,我們要怎樣解決這個問題,我們怎樣知道還錢的人是誰。
為了解這個問題,下面 Insus.NET創建一個asp.net站點,也順便創建好幾個網頁,去代表借(debit)貸(credit)。
下面這個演示站點程序大概如下,首先是借方Debit.aspx:
下面是貸方Credit,Insus.NET在演示中,列舉了四個,實際環境中,也許會有少有多。先是Credit1.aspx:
由於Creditn.aspx.cs沒有寫任何代碼,因此就不帖出來了。
Credit2.aspx:
分別演示一下,程序是能正常運行的:
上面的程序,我們都寫死了,稍微改動一下,它就有問題了。再用演示,看看其它問題:
某一天系統維護時,在xxx.aspx改變了一些控件,它就取不到值了,或者是在Debit.aspx.cs中的代碼,改變了一下控件ID名,在這些情況,均是在開發或是維護時,因某一處更改,好幾個地方均需要更改。一旦取不了值,你需要重新去debug程序。
OK,我們需要解決這些問題,一是代碼有可以不斷增多,另外一個問題,不想寫死控件ID。
其實最終關心的是貸方是否有把錢還回來。因此我們可以建一個接口Interface:
接口寫好,貸方均需要實現這個接口,因為借了錢,就要還貸。
先來看看Credit1.aspx.cs:
Credit2.aspx.cs:
Credit3.aspx.cs:
這個一改過之后,程序藕合已經脫離了。一方只管拿回自己的錢,一方不管是父親還是兒子還錢(TextBox1還是DropDownList3......)
運行結果與沒有重構前一樣效果一樣。
如果某一個Credit方有任何變更,如果TextBox1改為TextBox9還是DropDownList2改為TextBox,都與Debit借方無關了。如Credit3.aspx:
那只需要修改Credit3.aspx.cs:
全部說完了。雖是一個簡單的例子,望你能更好理解接口在asp.net的應用。說實話,在Insus.NET的博客中,經常有使用interface的例子,有時間可以參考參考,可以加深理解與印象:
http://www.cnblogs.com/insus/category/308317.html
本演示源程序可以下面鏈接下載:
http://download.cnblogs.com/insus/ASPDOTNET/DebitAndCredit.rar