ASP.NET 學習手記
Asp.net |
一、提交資料
(1) 用伺服器端控制元件後,再利用Server.Execute("send4.aspx"); 或者Server.Transfer("receive1.aspx"); 提交。前者仍然保持原有的web控制元件,後者不儲存。
(2) 寫在URL引數裡Response.Redirect("receive3.aspx?name=" + this.TextBox1.Text);
(3) 通過HTML控制元件,加入帶有action的form。
二、接收資料
(1) 按類接收資料
if(Context.Handler is MyWebExample.send4)
{
send4 send = (send4)Context.Handler;
Response.Write("Name:"+((TextBox)send.FindControl("TextBox1")).Text+"<p>");
}
(2) 從URL中接收
if(!IsPostBack)
{
Request.QueryString["text1"]
}
(3) 從Form中接收Request.Form["text1"]
(4) 作為引數籠統接收Request.Params["text1"]
<1>定製標籤較容易,把HTML程式碼儲存到一個檔案。然後用二句話在需要的地方引用:
<%@ Register TagPrefix="mycontrol" TagName="myc" Src="myUserControl.ascx"%>
<mycontrol:myc runat="server" id="Myc1"></mycontrol:myc>
<2>自定義控制元件
和定製標籤類似,只是可以自己新增屬性。
(1)新增JavaScript
<script language="javascript">
function ClientCheck(source,arguments)
{
if(arguments.Value<1 || arguments.Value>100 )
{
arguments.IsValid=false;
return false;
}
else
{
arguments.IsValid=true;
return true;
}
}
</script>
(2)新增CustomValidator控制元件,並且把ClientValidateFunction設為該函式
(3)設定ControlToValidate
4.如何使得DataGrid有分頁輸出資料功能
(1).對DataGrid按右鍵,在彈出選單的“屬性生成器”中可以設定分頁。
(2).接著對控制元件新增PageIndexChanged事件。並且輸入以下程式碼
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.EditItemIndex = -1;
DataGrid1.CurrentPageIndex = e.NewPageIndex;
DataGrid1.DataBind();
}
<?xml version="1.0" encoding="utf-8" ?>
<Advertisements>
<Ad>
<ImageUrl></ImageUrl>
<NavigateUrl>http://www.neusoft.com</NavigateUrl>
<AlternateText>歡迎</AlternateText>
<Keyword>Keyword</Keyword>
<Impressions>50</Impressions>
</Ad>
</Advertisements>
使用Session和Application不要初始化,和普通的asp一樣
if(Application["userCount"]==null)
Application["userCount"]=0;
else
Application["userCount"]=Convert.ToInt32(Application["userCount"])+1;
session用法和Application一樣。
if(Request.Cookies["cookie"]==null)
{
HttpCookie cookie = new HttpCookie("cookie","1");
Response.Cookies.Add(cookie);
this.Label3.Text="Cookies is 1";
}
else
{
HttpCookie cook = Request.Cookies["cookie"];
Response.Cookies["cookie"].Value=(Int32.Parse(cook.Value)+1).ToString();
this.Label3.Text=string.Format("Cookies is {0}",cook.Value);
}
<返回>
8.利用ASP.net上傳檔案
1.從HTML控制元件欄中拖入一個檔案瀏覽控制元件
2.設定該控制元件在伺服器端執行
3.給它的上傳新增程式碼
string fileName=this.File1.PostedFile.FileName;
string UploadFileName=Request.MapPath(Request.ApplicationPath+"//"+ System.IO.Path.GetFileName(fileName));
this.File1.PostedFile.SaveAs(UploadFileName);
按異常處理優先順序排序
(0)在Global.asax的Application_Error新增程式碼
protected void Application_Error(Object sender, EventArgs e)
{
Context.ClearError();
Response.Write("Error");
Response.Redirect("errorpage.htm");
}
(1)後臺程式碼中的WebForm1_Error
aspx頁面的屬性中UI.Page的Error事件中新增異常處理程式碼
private void WebForm1_Error(object sender, System.EventArgs e)
{
Exception ex=Server.GetLastError();
Session["error"]=ex.Message;
Server.ClearError();
Response.Redirect("error.aspx");
}
(2)在html程式碼中加入ErrorPage
ErrorPage="http://www.21cn.com"
(3)在Web.config中新增異常處理的頁面
<customErrors mode="On" defaultRedirect="error.aspx">
<error statusCode="401" redirect="error.aspx"/>
<error statusCode="404" redirect="http://www.sina.com.cn"/>
</customErrors>
(4)在IIS中設定異常處理頁
<返回>
10.Asp.net的安全認證及Web.config的配置
(1)在Web.config的配置
在<system.web>中修改選項
驗證模式設為Form,並且驗證頁為
<authentication mode="Forms">
<forms loginUrl="Login.aspx" />
</authentication>
不允許匿名使用者
<authorization>
<deny users="?" />
</authorization>
在</system.web>後加入不要驗證就能使用資料庫的頁面,用於在該頁訪問資料庫,察看是否存在該使用者。
<location path="Reg.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
(2)在程式碼中按普通方式,例如要求對方輸入資訊查詢資料庫或者XML進行驗證,驗證通過後,執行這句就表示驗證通過同時跳會開始進入的頁面
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(userName,true);
登出用 System.Web.Security.FormsAuthentication.SignOut();
如果不想跳回原處,可以先授權再redirect到其他頁面 System.Web.Security.FormsAuthentication.SetAuthCookie();
<返回>
11.Asp網頁的EnableViewState屬性對網頁效能的影響
ViewState主要是在提交以後回顯用的,它只有在頁面中的資料是提交到本頁時才有用,在這個時候,比如Textbox,你用EnableViewState="false",後臺同樣可以得到資料,但由於你提交到本頁,所以提交以後此Textbox中為空;而如果用EnableViewState="true",則提交以後返回時頁面中Textbox中為你提交以前的資料。
另外,除了頁面Page中的EnableViewState,每個可以提交的控制元件,Textbox、Dropdownlist都有EnableViewState屬性。實際上,回發的資料並不依賴於ViewState。回發的控制元件都實現了IPostBackDataHandler介面,該介面的LoadPostData方法中,會對返回的值和ViewState中的值進行判斷,如果改變了的話,呼叫RaisePostDataChangedEvent方法觸發相應的事件(對於TextBox來說就是TextChanged事件)。
如果你把EnableViewState="False",LoadPostData方法中返回的值始終會和文字框的預設值比較大小,也就是說,如果你在頁面TextBox中改變值以後,每次你點按鈕提交視窗都會觸發TextBox的TextChanged事件LoadPostData中如果返回的值和ViewState中的值不同的話,將把TextBox的值設定成返回的值這就是你看到的結果 。
在很多情況下,把EnableViewState設為false,可以提高應用程式的效能。特別在等待後臺把資料填充到DataGrid的情況下。如果這個時候設為true,那麼cpu的時間都浪費 在序列化資料到 ViewState 中。
每個控制元件(在標記上):sp:datagrid EnableViewState="false" ?/>
每個頁面(在指令中): <%@ Page EnableViewState="False" ?%>
每個應用程式(在 web.config 中): <Pages EnableViewState="false" ?/>
更多請檢視微軟中國
12.Web列印文件
<!--語言無關 儲存成 .HTML-->
<html>
<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>網路列印模板頁</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--media=print 這個屬性可以在列印時有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
<style>
.tdp
{
border-bottom: 1 solid #000000;
border-left: 1 solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}
.tabp
{
border-color: #000000 #000000 #000000 #000000;
border-style: solid;
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 1px;
border-left-width: 1px;
}
.NOPRINT {
font-family: "宋體";
font-size: 9pt;
}
</style>
</head>
<body >
<center class="Noprint" >
<p>
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value=列印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接列印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input type=button value=頁面設定 onclick=document.all.WebBrowser.ExecWB(8,1)>
</p>
<p> <input type=button value=列印預覽 onclick=document.all.WebBrowser.ExecWB(7,1)>
<br/>
</p>
<hr align="center" width="90%" size="1" noshade>
</center>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td colspan="3" class="tdp">第1頁</td>
</tr>
<tr>
<td width="29%" class="tdp"> </td>
<td width="28%" class="tdp"> </td>
<td width="43%" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>這樣的報表</p>
<p>對一般的要求就夠了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分頁-->
<div class="PageNext"></div>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td class="tdp">第2頁</td>
</tr>
<tr>
<td class="tdp">看到分頁了吧</td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>這樣的報表</p>
<p>對一般的要求就夠了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
在基於框架的網頁列印時,用如下函式可以列印某個框架內的網頁
<input type=button onclick="printweb(this)">
<script>
function printweb()
{
this.focus();
window.print();
}
</script>
13.將Web表格輸出為word或者Excel格式的檔案儲存在客戶端
Response.Clear();
Response.Buffer= true;
if (Session["Language"]!=null && Session["Language"].ToString()!="EN")
{
Response.Charset="GB2312";
}
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");
if (Session["Language"]!=null && Session["Language"].ToString()!="EN")
{
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
}//設定輸出流為簡體中文
Response.ContentType = "application/ms-excel";//設定輸出檔案型別為excel檔案。
//application/ms-word || application/ms-txt || application/ms-html || 或其他瀏覽器可直接支援文件
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
DataGrid1.RenderControl(oHtmlTextWriter); //DataGrid1為DataGrid控制元件,也可以是動態生成的HtmlTable <---唯一需要修改的地方
Response.Write(oStringWriter.ToString());
Response.End();
相關文章
- ASP.NET學習筆記2ASP.NET筆記
- [Vuex]Vuex學習手記Vue
- DirectX學習手記(-) (轉)
- ASP.NET學習手記:驗證使用者表單輸入 (轉)ASP.NET
- Extjs 學習手記--TreePanleJS
- DirectX學習手記(二) (轉)
- ASP.NET MVC學習筆記:(一)路由匹配ASP.NETMVC筆記路由
- Asp.Net Core學習筆記:入門篇ASP.NET筆記
- Ajax 學習手記 Jquery實現jQuery
- react js學習手記:react 事件ReactJS事件
- webpack入門學習手記(四)Web
- webpack入門學習手記(二)Web
- webpack入門學習手記(一)Web
- webpack入門學習手記(三)Web
- jQuery 表單驗證 學習手記jQuery
- redis學習手記(二)持久化方式Redis持久化
- DBA手記(學習)-library cache pin
- jquery學習手記(10)事件簡介jQuery事件
- 【筆記】動手學深度學習-預備知識筆記深度學習
- React學習手記3-事件處理React事件
- iOS學習筆記06 手勢識別iOS筆記
- NC50學習手記(1)——建賬
- ASP.NET Core 學習筆記 第四篇 ASP.NET Core 中的配置ASP.NET筆記
- 開發asp.net自定義控制元件(asp.net學習筆記三) (轉)ASP.NET控制元件筆記
- 開發asp.net自定義控制元件(asp.net學習筆記四) (轉)ASP.NET控制元件筆記
- 開發asp.net自定義控制元件(asp.net學習筆記五) (轉)ASP.NET控制元件筆記
- ASP.NET MVC 學習筆記-7.自定義配置資訊ASP.NETMVC筆記
- 【學習筆記】ASP.NET簡易的SQLHelper幫助類筆記ASP.NETSQL
- 學習ASP.NET的流程ASP.NET
- ASP.NET Core 學習筆記 第五篇 ASP.NET Core 中的選項ASP.NET筆記
- React學習手記5-細說元件stateReact元件
- Vue學習筆記(一)------腳手架vue cliVue筆記
- Promise學習筆記(知識點 + 手寫Promise)Promise筆記
- React學習手記1--基礎知識React
- MySQL增刪改查學習筆記(手寫)MySql筆記
- swoole學習手記(四)非同步任務task非同步
- 劍英的區塊鏈學習手記(一)區塊鏈
- 劍英的區塊鏈學習手記(二)區塊鏈