Asp.Net細節性問題技巧精萃
1.<%=...%>與<%#... %>的區別:
答:<%=...%>是在程式執行時呼叫,<%#... %>是在DataBind()方法之後被呼叫
2.控制元件接收哪些型別資料?
答:接收Bind的控制元件,一般有DropDownList,DataList,DataGrid,ListBox這些集合性質的控制元件,而被捆綁 的主要是ArrayList(陣列),Hashtable(哈稀表),DataView(資料檢視),DataReader這四個,以後我們就可以 對號入座,不會出現DataTable被捆綁的錯誤了:)
3.DataBind,獲得的資料,系統會將其預設為String,怎樣轉化為其它的型別?
DataBinder.Eval(Container.DataItem,"轉換的型別","格式")
最後一個"格式"是可選的,一般不用去管他,Container.DataItem是捆綁的資料項,"轉換型別"指的是 Integer,String,Boolean這一類東西.
4.主要名稱空間:
<% @ Import Namespace="System.Data" %> 處理資料時用到
<% @ Import Namespace="System.Data.ADO" % > 使用ADO.net ; 時用到
<% @ Import Namespace="System.Data.SQL" %> SQL Server 資料庫專用
<% @ Import Namespace="System.Data.XML" %> 不用看處理XML用到
<% @ Import Namespace="System.IO" %> 處理檔案時用到
<% @ Import Namespace="System.Web.Util" %> 發郵件時大家會用到
<% @ Import Namespace="System.Text" %> 文字編碼時用到
5.Connections(SQLConection 或者 ADOConnection)的常用屬性和方法:
| ConnectionString 取得或設定連結資料庫的語句
| ConnectionTimeout 取得或設定連結資料庫的最長時間,也是就超時時間
| DataBase 取得或設定在資料庫伺服器上要開啟的資料庫名
| DataSource 取得或設定DSN,大家不會陌生吧:)
| Password 取得或設定密碼
| UserID 取得或設定登陸名
| State 取得目前聯結的狀態
| Open() 開啟聯結
| Close() 關閉聯結
| Clone() 克隆一個聯結。(呵呵,綿羊可以Connection我也可以)
示例:
SQLConnection myConnection = new SQLConnection();
myConnection.DataSource = "mySQLServer";
myConnection.Password = "";
myConnection.UserID = "sa";
myConnection.ConnectionTimeout = 30;
myConnection.Open();
myConnection.Database = "northwind";
myConnection.IsolationLevel = IsolationLevel.ReadCommitted
6.Command常用的方法和屬性
| ActiveConnection 取得或設定聯結Connections
| CommandText 執行的SQL語句或儲存過程(StoredProcedure)名
| CommandTimeout 執行的最長時間
| CommandType Command操作的型別(StoredProcedure,Text,TableDirect)三種,預設Text
| Parameters 操作儲存過程時使用
| Execute() 執行SQL語句或儲存過程
| ExecuteNonQuery() 同上,區別在於不返回記錄集
| Clone() 克隆Command
示例:
string mySelectQuery = "SELECT * FROM Categories ORDER BY CategoryID";
stringmyConnectString="userid=sa;password=;database=northwind;server=mySQLServer";
SQLCommand myCommand = new SQLCommand(mySelectQuery);
myCommand.ActiveConnection = new SQLConnection(myConnectString);
myCommand.CommandTimeout = 15;
myCommand.CommandType = CommandType.Text;< /FONT >
7.開啟和關閉資料庫兩種方法:
1.MyConnection.Open(); //開啟聯結
MyConnection.Close();
2.MyCommand.ActiveConnection.Open();
MyCommand.ActiveConnection.Close()
8.使用DataSet,在資料庫中增加、修改、刪除一個資料
a.新增資料
DataRow dr=MyDataSet.Tables["UserList"].NewRow();
dr["UserName"] = "周訊";
dr["ReMark"] = "100";
dr["Comment"] = "漂亮MM";
MyDataSet.Tables.Rows.Add(dr);
b.修改資料
MyDataSet.Tables["UserList"].Rows[0]["UserName"]="飛刀大哥";
c.刪除資料
MyDataSet.Tables["UserList"],Rows[0].Delete();
d.恢復資料
if(MyDataSet.HasErrors)
{
MyDataSet.RejectChanges();
}
e.探測DataSet是否有改動
if(MyDataSet.HasChanges)
{
//儲存程式碼
}else{
//因為沒有變化,所以不用儲存,以節省時間
}
f.更新資料庫
MyComm.Update(MyDataSet); //更新資料庫中所有的表
MyComm.Update(MyDataSet,"UserList"); //更新某個表
9.DataGrid實現分頁功能
AllowPaging="True" //是指允許分頁,這個是最主要的。有了它,我們才能分頁。
PageSize="5" //是指定每頁顯示的記錄數,如果不寫,就會預設為10條。
PagerStyle-HorizontalAlign="Right" //是指定分面顯示的定位,預設是Left
PagerStyle-NextPageText="下一頁" //把<>改為上一頁和下一頁字串
PagerStyle-PrevPageText="上一頁"
PagerStyle-Mode="NumericPages" //把<>改為123數字顯示
10.顯示一共有多少頁,並且報告當前為第幾頁
當前頁是:<font color=red><%=DataGrid1.CurrentPageIndex+1%></font><br>
總頁數是:<font color=red><%=DataGrid1.PageCount%></font><br>
11.個性化分頁
程式設計師大本營之"親密接觸ASP.Net(14)"有完整程式碼
12.要將頁面重置為有效的狀態
IValidator val;
foreach(val in Validators)
{
Val.IsValid = true;
}
13.重新執行整個驗證序列
IValidator val;
foreach(val in Validators)
{
Val.Validate();
}
14.禁用客戶端驗證
<%@ Page Language="c#" clienttarget=downlevel %>
15.Repeater、DataList和DataGrid控制元件用途"
這些控制元件可以簡化幾種常見的 Web 應用程式方案,包括報表、購物車、產品列表、查詢
結果和導航選單。 Repeater是唯一允許在其模板中存在 HTML片段的控制元件.
16.Server.Execute("another.aspx")和Server.Transfer("another.aspx")區別:
Execute是從當前頁面轉移到指定頁面,並將執行返回到當前頁面
Transfer是將執行完全轉移到指定頁面
17.XML檔案中可以自己存有架構,也可以存在於*.xsl檔案中,但必須通過xmlns屬性在xml文件的根節點中指定該資訊,如下所示:
<rootelement xmlns="x-schema:scheduledSchema.xsl">
18.XML檔案的讀取
FileStream myfs=new Filestream(Server.MapPath("xmldtagrid.xml"),FileMode.Open,FileAccess.Read);
StreamReader myreader=new StreamReader(myfs);
DataSet myds=new DataSet();
myds.ReadXml(myreader);
19.正規表示式 控制元件RegularExpressionValidator
符號 含義
^ 指定檢查開始處
$ 指定檢查結束處
[] 檢查輸入的值是否與方括弧中的字元之一相匹配
/W 允許輸入任何值
/d{} "/d"指定輸入的值是一個數字,{}表示已指定資料型別的出現次數
+ 表明一個或多個元素將被新增到正在檢查的表示式
示例:電子郵件格式(具有@號,且以.com/.net/.org/.edu結尾)
validationexpression="^[/w-]+@[/w-]+/.(com|net|org|edu)$"
20.DataGrid控制元件中資料操作重要語句:
屬性:DataKeyField="userid" //設userid為表的主鍵,無法將該欄位的值更新到資料庫,最好設表的主鍵為DataGrid的主鍵
SqlCommand.Parameters["@userid"].Value=dg.DataKeys[(int)e.Item.ItemIndex]; //檢索所要更新的行的主鍵(將當前選定的行的 主鍵值賦給命令的一個參)數
SqlCommand.Parameters["@fname"].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text; //為引數賦予已修改的行值
21.自定義控制元件:
a.使用者控制元件(ASP建立頁面一樣)
(I). 建立頁面,拖入控制元件,設定屬性/方法. <% @Control Language="C#" Debug="True" %>中的@Control指令來定義此頁 將包含控制元件程式碼
(II) 儲存為*.ascx檔案,如a.ascx.
(III).使用: 頭<%@Register Tagprefix="MyFirstControl" TagName="MyLbl" Src="a.axcs" %>
//Tagprefix為控制元件的字首,像ASP:TextBox中的ASP
//TagName用於指定自定義控制元件的名稱
//Src指定控制元件檔案源
身體:<MyFirstControl:MyLbl runat="Server" id="AllMine" MyText="成功了" />
b.使用C#建立自定義控制元件
(I). 建立純程式碼檔案,繼承基類Control,並儲存為*.cs,如a.cs.
(II).將程式碼編譯生成程式集: csc /t:library /r:System.dll,System.Web.Dll a.cs
//library告訴C#編譯器生成程式集
// /r:System.dll System.Web.Dll告訴C#編譯器引用指定的程式集
(III).將生成dll檔案放在bin目錄中
(IV).使用: <% @Register TagPrefix="Mine" Namespace="MyOwnControls" Assembly="a" %>
22.複合控制元件注意事項:
public class MyCompositin:Control,INamingContainer //INamingContainer:如果在頁面上有多個此控制元件例項,則此結口可以給每 {} //個例項有唯一標誌
this.EnsureChildControls();//表示將複合控制元件的子控制元件都呈現到頁面上,此方法檢查伺服器控制元件是否包含子控制元件
CreateChildControls
23.Button/LinkButton/ImageButton/HyperLink什麼時候用?
1.Button和ImageButton用於將資料傳遞迴伺服器.
2.Hyperlink用於在頁面之間導航
3.LinkButton用於將資料儲存到伺服器或訪問伺服器上的資料
24.跟蹤除錯
跟蹤:
1.頁級別跟蹤: 在頁的開頭包括如下的頁指令<%@ Page Trace="True" TraceMode="SortByCategory/SortByTime" %>
自定義訊息:
Trace.Write("這裡為要顯示的字串");
Trace.Warn("這裡為要顯示的字串"); //與Trace.Write相同,只是字型為紅色
檢查是否使用了跟蹤
例句: if(Trace.IsEnabled) { Trace.Warn("已啟用跟蹤")}
2.應用程式級別跟蹤: 在Web.config檔案的<System.Web>節中 <trace enabled="true" pageOutput="true"/>
25.設定快取:
1.輸出快取:
I.頁面設定: 將 <%@ OutputCache Duration="120" VaryByParam="none" %> 加在需要快取頁的開頭
註釋:在請求該頁的後兩分鐘之內,輸出內容不變
II.程式設計方式設定:
主要使用類System.Web.HttpCachePolicy類下的方法
(1). Response.Cache.SetExpires(DateTime.Now.AddSeconds(120)); //在此方法中必須指定到期時間,如本語 //句為兩分鐘
(2). Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));
Response.Cache.SetSlidingExpiration(true); //"可調到期",主要用於那些開始訪問量大,但隨後訪問 //量平衡的情況
功能:第一句設定快取到期時間,第二行開啟 sliding expiration(可調到期).
2.資料快取:
(1).DataView mySource; (2).給mySource賦值;
(3).Cache["myCache"]=mySource; (4).mySource=(DataView)Cache["myCache"]
26.部署: 直接複製到產品伺服器即可 複製語句: XCOPY <source_path> <destination_path> //XOPY只接受物理路徑,不接受虛擬路徑
謝謝閱讀!
相關文章
- JavaScript使用技巧精萃JavaScript
- UI設計細節及技巧UI
- 最常用的網路命令精萃
- 關於CSS一些細節問題CSS
- vue 元件(component)命名的小細節問題(大小寫問題)Vue元件
- react vue 在移動端的相容性問題和一些小細節ReactVue
- Java集合詳解8:Java集合類細節精講,細節決定成敗Java
- 伊吹萃香 題解
- Linux系統管理技巧大薈萃Linux
- vue元件使用的細節 is 屬性Vue元件
- Spring(三)屬性配置細節Spring
- 超讚的 CSS 陰影技巧與細節CSS
- 你可能不知道的 transition 技巧與細節
- 小程式開發所遇的問題以及一些小細節
- 關於資料庫 Block 儲存細節問題的討論資料庫BloC
- asp.net配置問題ASP.NET
- 章節排序問題排序
- 精讀《為什麼專家不再關心技術細節》
- 你所不知道的 CSS 陰影技巧與細節CSS
- CSS進階內容——佈局技巧和細節修飾CSS
- 你所不知道的 CSS 濾鏡技巧與細節CSS
- 選購工業網路交換機值得注意的細節問題
- Gradle 技巧與問題Gradle
- 【譯】精挑細選的一份React效能問題優化的清單React優化
- 【譯】精挑細選的一份 React 效能問題優化的清單React優化
- spring屬性配置的一些細節(二)Spring
- ::細細品味ASP.NET :: (轉)ASP.NET
- Swift UIButton 圖片 文字 同時顯示 不顯示,細節問題SwiftUI
- 工作細節
- 小細節
- [面試]-- 65個最常見的面試問題與技巧性答覆(面試技巧和注意事項)面試
- 【原始碼解讀】asp.net core原始碼啟動流程精細解讀原始碼ASP.NET
- 5 個技巧避免不必要的瀏覽器相容性問題瀏覽器
- JavaWeb—Servlet基礎(細節版,相當細節)JavaWebServlet
- Asp.net常用技巧ASP.NET
- asp.net 小技巧ASP.NET
- ASP.NET的Page.IsPostBack 屬性詳細說明(轉)ASP.NET
- 為什麼會有kafka訊息系統?小問題藏著大細節!Kafka