ASP.NET中级学习2
下載圖片處理
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漏洞:上傳可執行的頁面到服務器,然后在設法訪問它,讓他執行并破壞網站。
?
轉載于:https://www.cnblogs.com/YangFengHui/archive/2011/04/16/2018591.html
總結
以上是生活随笔為你收集整理的ASP.NET中级学习2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mapreduce 算法
- 下一篇: WPF中实现先登录后启动主程序的方法