ASP.NET中級學習2

來源:互聯網
上載者:User

下載圖片處理

T_UsersTableAdapter adapter = new T_UsersTableAdapter();

                var data = adapter.GetDataById(int.Parse(context.Session["UserId"].ToString()));

                var user = data.Single();

                if (user.Level == 1)

                {

                    string PicPath = "~/img/"+filename;

                    if (PicPath.IndexOf('.')!=6)

) //此處有漏洞風險,防止使用者通過拼湊請求參數的方法非法下載網站內原始碼。

                    {//PicDownload2.ashx?FileName=../PicDownload2.ashx.cs.這樣就可以下載了,所以要判斷下載的檔案路徑是否在img目錄下的,如果不是則不讓下載。

                        context.Response.WriteFile(PicPath);

                    }

                }

 

 

 

 

M秒後自動跳轉到其他頁面:

1.<meta name=”refresh” content=”3” url=b.htm”>

2.JavaScript 的定時器。

 

 

Select ISNULL(ErrorTimes,100) from T_users

如果ErrorTimes欄位為null,就設為100

 

WebForm 1

WebForm分為兩個檔案aspx和aspx.cs,aspx是 面模版,是頁面描述檔案,就是html的內容,和aspx結合的更好,不用像一開始那樣程式員自己去填充模版,空間都是定義在aspx中,內聯的javascript,css都是現在aspx中的,服務端的C#代碼定義在aspx.cs中,Aspx控制頁面的長相,cs控製程序邏輯,種前aspx後cs的方式被稱為CodeBehind。

 

相當於以前的html+ashx的模式。Aspx就是”模版引擎”

cs可以調用aspx中的控制項,aspx中也可以訪問cs中定義的欄位、函數,還可以編寫複雜的C#代碼,for等所有C#代碼都可以寫在aspx中。(不推薦這樣)

<%for (int i = 0; i < 10; i++){%>您好!<%} %>

可以在頁面上寫一些簡單的代碼---跟jsp一樣。

 

<%=myName %>  “=”表示輸出運算式。myName是後台cs代碼中定義的屬性。

<%=getName(); %>  getName()是一個方法。屬性方法的成員層級必須是protected或者是public,不能是private的。

 

Aspx於cs之間的關係。

 

aspx、cs、dll之間的關係。

 

Response.Write(this.GetType()+"<br/>");//取得當前對象的類

Response.Write(this.GetType().Assembly.Location+"<br/>");//取得但前對象的assembly地址。

Response.Write(this.GetType().BaseType+"<br/>"); //取得當前對象的父類

Response.Write(this.GetType().BaseType.Assembly.Location + "<br/>"); //取得當前對象的父類的assembly地址

當前頁面執行時的類是後台代碼類的一個子類。前後台之間是繼承關係。

 

Page類

 

Page類成員:

1.Request,Response,Server屬性:對context.Request, context.Response, context.Sever的簡化調用。

1.      AppRelativeVirtualPath 屬性:獲得頁面相對於應用根路徑的路徑,比如:~/Default.aspx

2.      FindControl(crlId),根據控制項的id找到控制項。一般情況下直接在代碼中寫控制項的id引用控制項就可以了,但是對於一些場合:使用ListView等控制項的模版、編寫自訂控制項等則需要使用FindControl來引用控制項,FindControl傳回值是Control  (TextBox)FindControl(“TextBox1”).Text=“aaa”;

3.      IsPostBack ,Session.

4.       ResolveClientUrl(url)將虛擬路徑轉換為用戶端訪問時的路徑。比如ResolveClientUrl(“~/a/b.aspx”)結果是a/b/aspx,這通常在ListView等控制項的模版中輸出html使用。基本就是對VirtualPathutitlity.ToAbsolute的簡化調用。

 

ASP.Net伺服器端基本控制項介紹。

 Aspx.Net服務端控制項是asp.net對HTML的封裝,asp.net會將服務端控制項渲染成html代碼輸出給瀏覽器。服務端控制項是asp.net非常吸引初初學者、非常容易上手的東東,也是最被人詬病的東西。但是,物盡其用,服務端控制項在內網系統、互連網系統的後台部分等訪問頻率不高的地方用的還很適合的。

(如果用的不好,會產生很多viewstate等不需要用到的代碼,還有,asp.net服務端控制項是通過post提交的,get方法也可以,但幾乎沒法用,很多場合,特別是在開發互連網程式,用post是很麻煩的。)

Asp.net應用是有限制的,比如開發一個企業的進銷存系統(企業內部用的),不是一種互連網系統,互連網系統的後台,開發就很方便簡單。做互連網前台,對伺服器控制項就要有所取捨,也不是完全不用。

 

Asp.net簡單易用,不要因為它簡單就不屑,我們應該調整好心態,怎樣利用簡單的東西早出複雜的系統,這才是我們需要做的。

 

asp.net控制項,大部分都是從Control,WebControl類繼承的,幾乎都有的成員:1.ClientID。獲得控制項在用戶端的ID。

document.getElementById('<%=TextBox1.ClientID %>').onmouseover = function () {this.style.background = 'red';}

在用戶端通過javascript和jquery等操作控制項時,必須要用('<%=TextBox1.ClientID %>').的方法取得控制項id。好習慣(有時候用戶端和服務端的ID會不同。)

 

2.Visible屬性,控制項是否可見,如果Visible=false是不會渲染到HTML中的,這和在HTML中給元素style.display=’none’效果是不一樣的。

 

3. CssClass控制項的css style屬性

4.Attributes 用來設定擷取控制項的額外屬性。和Dom中的setAttribute(),getAttribute()是一樣的。

Button1.Attributes[“a1”]=”2.jpg”;

Button1.Attributes[“onmouseover”]=”alert(‘Hello man’)”;

 

基本控制項:

1.      Label控制項,用來顯示文本,在用戶端渲染成<span id=”Label1”>姓名</span> <span></span>跟div的區別,div佔用一個地區,而span則放在哪就顯示在那裡。Label控制項如果設定了 AssociatedControlId屬性,它就會被渲染成相應控制項的Label,點擊Label,關聯的控制項就得到焦點。<label for=”TextBox1” id=”Label1”>姓名</Label>

2.      Literal控制項不渲染任何元素。純文字顯示在用戶端。設定了Mode屬性為Encode後,文本還會自動的進行HTML編碼。

3.      TextBox控制項,文字框控制項,TextMode屬性取值SingleLine,MultiLine、Password,分別渲染成intput(type=text)、textarea、input(type=password)、當AutoPostBack屬性為true的時候,使用者焦點離開TextBox就會造成Post,實現原理就是講Asp.net原理時的AutoPostBack. 用javascript提交表單,_doPostBack( );在ASP.Net中要提交表單的時候,最好直接調用_doPostBack(); TextChanged事件,文本發生變化的時候事件觸發。

4.      RadioButton控制項,渲染為input(type=radio),通過GroupName屬性進行分組。

 

5. Button控制項。OnClientClick屬性,當使用者點擊按鈕的時候,在瀏覽器端執行的代碼,注意OnClientClick是字串屬性,寫的代碼是javaScript代碼,運行在瀏覽器端。<asp:Button ID=”btnDel” ruant=”server” onclientclick=”return confirm(‘真的要刪除嗎?’)” Text=”刪除”/>

 

6.LinkButton控制項。在用戶端渲染成一個超連結:這是一個特殊的超連結:      <a id="LinkButton1" href="javascript:__doPostBack( )">LinkButton</a>點擊它就提交表單,相當於一個按鈕。

7.ImageButton控制項。用戶端渲染成input(type=image)

<input type="image" name="ImageButton1" id="ImageButton1" src="../img/Abu.gif" />

 

8.Button,LinkButton,ImageButton等控制項都有 CommandName,CommandArgument兩個屬性和Command事件,可以讓多個按鈕控制項共用一個Command時間處理函數,通過讀取事件對象e的CommandNam、CommandArgument兩個屬性讀取被點擊按鈕設定的這兩個參數來執行不同的操作。例如:編輯、刪除多行資料。這種用法在ListView等控制項中用的最多。

 

9.Panel控制項,一般渲染成一個div。但如果設定了GroupingText屬性後:會渲染成fieldset。

<fieldset><legend>Panel組件</legend></fieldset>

 

10.HyperLink 超連結:引用站內資源的時候比較方便,自動幫你轉換路徑,如果引用互連網地址如百度,則直接用<a>標籤就ok了,減少伺服器的負擔。

 

11.FileUpload 檔案上傳:渲染成:input(type=file)

<input type="file" name="FileUpload1" id="FileUpload1" />

要預防WebShell漏洞:上傳可執行檔頁面到伺服器,然後在設法訪問它,讓他執行並破壞網站。

 

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.