怎樣自訂一個伺服器端的控制項

來源:互聯網
上載者:User
伺服器|控制項 大家知道在ASP.NET中微軟為我們提供了大量的伺服器端控制項,包括HtmlControl 和WebControl。它們功能強大,為我們的編程提供了極大的方便。更重要的一點是它開放了對第三方控制項的使用。這就使我們可以定製自己需要的伺服器端控制項。
  下面我就以一個整合化的上傳組件來說明怎樣自訂一個伺服器端的控制項,這個組件其實是HtmlInputFile、Button 和Label以及事件實現的集合。這個組件要達到的功能是要象已有的webcontrol一樣,用一個設定了幾個屬性的標記就自動可以實現檔案上傳了,而不用再實現事件等。
  編寫後端代碼編譯成一個dll
  //檔案名稱:WmjWebControls.cs
  using System.Drawing;
  using System.Web.UI.HtmlControls;
  using System.Web.UI.WebControls;
  using System;
  namespace Wmj
  {
   public class FileUpLoad : Panel
   {
   private HtmlInputFile htmlInputFile;
   private Button button;
   private Label label;
   public FileUpLoad() : base()
   {
   htmlInputFile=new HtmlInputFile();
   button=new Button();
   button.Text="上傳";
   button.Click+=new EventHandler(this.Button_Click);
   label=new Label();
   label.Text="<font size=2>請選擇上傳檔案的路徑</font>";
   this.Controls.Add(htmlInputFile);
   this.Controls.Add(button);
   this.Controls.Add(label);
   this.Width=450;
   this.Height=30;
   this.BorderStyle=BorderStyle.Dotted;
   this.BorderWidth=1;
   }
   private void Button_Click(object sender, EventArgs e)
   {
   System.Web.HttpPostedFile postedFile=htmlInputFile.PostedFile;
   if(postedFile!=null)
   {
   try{
   string fileName=PathToName(postedFile.FileName);
   if(!fileName.EndsWith(Extension))
   {label.Text="You must select "+Extension+" file!"; return;}
   if(postedFile.ContentLength>int.Parse(FileLength))
   {label.Text="File too big!";return;}
   postedFile.SaveAs(SavePath+fileName);
   label.Text="Upload File Successfully!";
   return;
   }catch(System.Exception exc){label.Text=exc.Message;return;}
   }
   label.Text="Please select a file to upload!";
   return;
   }
   private string savePath="";
   private string extension="";
   private string fileLength="0";
  //上傳的檔案儲存在伺服器上的位置預設為c:\ 這些屬性一般都是在asp.net的標記中設定也可以在codebehind中設定
   public string SavePath
   {
   get
   {
   if(savePath!="") return savePath;
   return "c:\\";
   }
   set
   {
   savePath=value;
   }
   }
  //上傳檔案的最大長度 單位k 預設為1k
   public string FileLength
   {
   get
   {
   if(fileLength!="0") return fileLength;
   return "1024";
   }
   set
   {
   fileLength=(int.Parse(value)*1024).ToString();
   }
   }
  //上傳檔案的副檔名 預設為txt
   public string Extension
   {
   get
   {
   if(extension!="") return extension;
   return "txt";
   }
   set
   {
   extension=value;
   }
   }
   public string PathToName(string path)
   {
   int pos=path.LastIndexOf("\\");
   return path.Substring(pos+1);
   }
   }
  }
  ////////////////////////////////////////////////////////////////////////////////
  ////
  將這個檔案編譯成dl,l放在要使用位置的bin目錄下面就可以在網站中通過
  <Wmj:FileUpLoad SavePath="E:\\" FileLength="3" Extension="txt" runat="server"/>
  使用這個組件了
  下面舉個調用這個控制項的例子
  <%@page language="C#"%>
  <!--注意下面這一句是必須的-->
  <%@ Register TagPrefix="Wmj" Namespace="Wmj" Assembly="WmjWebControls"%>
  <html>
  <head>
  </head>
  <body>
  <form enctype="multipart/form-data" runat="server">
  <Wmj:FileUpLoad SavePath="E:\\" FileLength="3" Extension="txt" runat="server"/>
  <!--怎麼樣使用就是這麼簡單有點一勞永逸的感覺了吧-->
  </form>
  </body>
  </html>
  有了這個例子的啟發,大家再也不用擔心asp.net的伺服器控制項太少了吧。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。