ASP.NET动态增加控件 继承篇

来源:未知 责任编辑:智问网络 发表时间:2013-09-02 11:47 点击:

 

随着後面要讲得东西越来越深,這邊文章內容以及程式碼,也變得越來越多,因為這不是我原來的目的,

所以我還是會盡量用淺顯易懂的方式來讓大家瞭解。

 

继承的好处,这里不多说,主要是 示范,如何在ASP.NET 来继承。

 

一般常見的繼承是用來改寫ASP.NET 既有的控件,而我最常用不是這方面,而是用來規範網頁標準開發流程,另一方面是用來減少我的程式碼,上述兩方面最終目的,

其實都是為了未來減少系統維護的困難度。

 

規範標準流程,在多人共同開發上,尤顯其重要性,否則有維護過他人程式的人,都知道每各開發者,都有其風格,你光要瞭解每個人的風格就要花很多時間了,最麻煩的還是,每個人 開發風格,還會隨著他的成長 來變化,這等於你每接收一隻程式,不管是不是同一人,都要重新 瞭解一次開發風格,其中所需成本可想而知。

 

在這邊程式中有使用deal_Button_Click 這個函式,這就是一種開發流程的規範,因為我們基底程式已經寫好必要流程,後面要繼承的人,就只能照我們的基底流程來開發,如此一來,如此我們就可以 藉由這種方式,來強迫後面使用的人,一定要用這個方式來開發。

 

而減少程式碼這個道理 也是顯而易見的,這個開發模式,就我本身長久經驗來看,在使用時,並不用想的太困難,尤其是想要一開始 就要想的很清楚,這都是很困難,反而造成使用這種開發模式的阻礙,我個人建議讀者在使用時,最簡單的方式,其實就是一直不斷的整裡手中的程式碼,把共通的部份集合起來,先能達成減少程式碼的目的就可以了,能減少程式碼,就能吸引其他開發人員一起使用,大家在一起不斷去討論、精進就可以了。

 

上述的方式,當然只是用一個簡要的方式,讓讀者容易瞭解,在一般大案子中,還是需要資深人員,先規劃架構以及定義相關計畫,來進行開發的,這些都有很多很深奧的理論,在討論了,也不需要我在這來畫蛇添足。

 

JS_Demo2Base.aspx.cs

 1 using System;

 2 using System.Data;

 3 using System.Collections;

 4 using System.Web.UI;

 5 using System.Web.UI.WebControls;

 6 using System.Web.UI.HtmlControls;

 7 using System.Text;

 8

 9 public class JSDemoBase : System.Web.UI.Page{

10

11     protected HtmlGenericControl sourceTag;

12     protected Button _myBtn;

13     protected TextBox _myTB;

14

15     protected override void OnInit(EventArgs e)

16     {

17         base.OnInit(e);

18

19         Label message = new Label();

20         message.ID = "请输入你要说的话";

21         sourceTag.Controls.Add(message);

22

23         _myTB = new TextBox();

24         _myTB.ID = "input";

25         //input.Text = val;

26         sourceTag.Controls.Add(_myTB);

27

28         _myBtn = new Button();

29         _myBtn.ID = "btnSayHello";

30         _myBtn.Text = "SayHello";

31         sourceTag.Controls.Add(_myBtn);

32

33         string val = Request.QueryString.Get("val");

34         deal_Button_Click(val);

35     }

36

37     public virtual void deal_Button_Click(string value)

38     {

39     }

40

41     public Button btnSayHello

42     {

43         get

44         {

45             return _myBtn;

46         }

47     }

48     public TextBox input

49     {

50         get

51         {

52             return _myTB;

53         }

54     }

55 }

 

 

在写基底程式时,如有引用asp.net 上的server 端控件,请记得要在程式一开始就要先定义(ID、Type 都要一致),如上述程式中的sourceTag。这样一来就可以程式中来直接使用该控件,就像我们原来asp.net 程式一般。

www.2cto.com

JS_Demo2.aspx

 1 <%@ Page Language="C#" src="./JS_Demo2Base.aspx.cs" Inherits="JSDemoBase" %>

 2

 3    <script language="C#" runat="server">

 4       

 5       

 6     public override void deal_Button_Click(string value)

 7     {

 8         input.Text = value;

 9         if (value != "" && value != null)

10             btnSayHello.Attributes.Add("OnClick", "return SetValue(" + input.ClientID + ");");

11         else

12             btnSayHello.Attributes.Add("OnClick", "return GetOtherValue(" + input.ClientID + ");");

13     }

14

15    </script>

16 <html>

17 <head>

18     <meta http-equiv="content-type" content="text/html; charset=utf-8" />

19 </head>

20 <body>

21  <script type = "text/javascript">

22      var myInput;

23      function GetOtherValue(ctrl) {

24          myInput = ctrl;

25          var hWnd = window.open("JS_Demo.aspx?val=" + ctrl.value, "_blank" );

26          if ((document.window != null) && (!hWnd.opener))

27              hWnd.opener = document.window;

28          return false;

29      }

30      function SetValue(ctrl) {

31          window.opener.myInput.value = "Re: " + ctrl.value;

32          return false;

33      }

34 </script>

35    <form runat="server">

36

37       <h3>动态增加控件 继承篇</h3>

38       

39       <p/>

40       <div id="sourceTag"  runat="server">

41       </div>

42       <p/>

43       一条小龙

44    </form>

45 </body>

46 </html>

 

 

 

~~~ 一条小龙(babydragoner) ~~~

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • asp.net 设置GridView的选中行的实现代码
    • C#高级编程:数据库连接[1]
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET&#160;GridView列表代码示例
    • Asp.net MVC源码分析--Action Filter的链式调用
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1