1、<%# %> <%= %> <% %>各自的作用是什么,有什么區(qū)別?
(1)、<%= %> :此用法在ASP時(shí)代就存在的。在ASP.NET中,通過包含在 < % 和 %>中的表達(dá)式將執(zhí)行結(jié)果輸出到客戶瀏覽器 ,不支持綁定數(shù)據(jù)集合。綁定位置:
前臺位置1: function fun() {var str = '<%= DateTime.Now %>'; }
前臺位置2:<input type="text" value="<%= GetVariableStr %>" />
Ps:必須是綁定到非服務(wù)器端控件的屬性
前臺位置3:"<%= GetFunctionStr() %>"
(2)、<%# %> :ASP.NET 引入了一種新的聲明語法 <%# %>。該語法是在 .aspx 頁中使用數(shù)據(jù)綁定的基礎(chǔ),所有數(shù)據(jù)綁定表達(dá)式都必須包含在這些字符中。這里從用法和適用范圍等方面與第一種綁定方式進(jìn)行區(qū)分。
從出現(xiàn)的位置來看,除了能出現(xiàn)在第一種代碼塊出現(xiàn)的所有位置外,他還可以出現(xiàn)在服務(wù)器端控件的屬性中。
從綁定的變量類型上看,他還可以配合ASP.NET的數(shù)據(jù)綁定類控件,來綁定上述的第四種“變量”類型,就是數(shù)據(jù)集合(DropDownList,DataList,DataGrid,ListBox這些是數(shù)據(jù)綁定類控件,數(shù)據(jù)集合包括ArrayList(數(shù)組),Hashtable(哈稀表,DataView(數(shù)據(jù)視圖),DataReader等)。
從用法上看,在前臺代碼中除了在相應(yīng)位置寫上<%# %>外,在后臺代碼中,還需要使用DataBind()方法。
這種方式在使用時(shí),不但可以實(shí)現(xiàn)(取代)<%=... %>所滿足的功能,還可以綁定服務(wù)器控件屬性,也可以將集合類型綁定到支持的數(shù)據(jù)綁定類控件。在用法上,前臺代碼除了對數(shù)據(jù)綁定類控件綁定數(shù)據(jù)集合外有所差別,其他的使用上與第一種沒區(qū)別。
(3)、<% %>:這種方式是ASP.NET4.0中新加入的綁定方式,常用于MVC中,但普通webform中也可使用。他的功能其實(shí)就是對綁定的值進(jìn)行一下編碼,因此,一下兩者是等同的:
<%= Server.HtmlEncode("<b>test</b>") %>
<%: "<b>test</b>" %>;
2、Request Request.form與Request.QueryString的區(qū)別
(1)、Request.form方法,它是用來接收表單變量的(post 方法)
(2)、Request.QueryString方法, 它是接收URL參數(shù)的 (get 方法)
(3)、Request對象也可以不指明具體使用QueryString或是form方法,如request("變量"), 因?yàn)樗茏詣幼R別,不過還是指明為好,否則,要它自己判斷也得花些微時(shí)間,影響程序執(zhí)行效率。
兩者除了接收方法不同外,還有傳遞數(shù)據(jù)量大小的問題,request.form方法能接收的數(shù)據(jù)沒有限制,而request.QueryString只能接收數(shù)據(jù)量小于2KB數(shù)據(jù),當(dāng)然后者的執(zhí)行速度要比前者快。一般往數(shù)據(jù)庫請求查詢時(shí)用request.QueryString方法,因?yàn)椴樵儠r(shí)只不過那么幾個(gè)關(guān)鍵詞,沒有必要用request.form方法而導(dǎo)致查詢速度變慢。另外,request.QueryString方法還會把數(shù)據(jù)信息顯示在客戶端瀏覽器地址欄中,安全性較差。 request.form方法不存在上述問題,因此大量被應(yīng)用在多個(gè)文本域提交數(shù)據(jù)和用戶登陸的場合。
3、如何在一個(gè)頁面中禁用視圖狀態(tài)?
在頁面開頭:<%@ Page Language="C#" EnableViewState=false %>
ASP.NET中,很多地方可以設(shè)置EnableViewState。
(1)、在web.config中,在page小節(jié)中設(shè)置,比如:
<pages enableViewState="false"> 這樣的設(shè)置后,所有沒有明確指定EnableViewState的控件,都會使用在web.config中指定的值。
(2)、在MasterPage中,當(dāng)在MasterPage中EnableViewState=false時(shí),表示禁用了使用該MasterPage的頁面的視圖狀態(tài)信息,包括所有控件,即使頁面或控件明確指定EnableViewState=true。
(3)、在Page中,當(dāng)在Page中EnableViewState=false時(shí),表示禁用了該P(yáng)age的頁面的視圖狀態(tài)信息,包括所有控件,即使控件明確指定EnableViewState=true。
(4)、在UserControl中,當(dāng)在UserControl中EnableViewState=false時(shí),表示禁用了該UserControl的視圖狀態(tài)信息,包括所有控件,即使控件明確指定EnableViewState=true。
(5)、在控件中,當(dāng)在控件中EnableViewState=false時(shí),表示禁用了該控件的視圖狀態(tài)信息。
注:如果要確保某個(gè)控件使用視圖狀態(tài),可以在該控件的OnInit事件中,指定該控件的父控件和Page使用視圖狀態(tài)。
通常的做法:
在web.config中禁用視圖狀態(tài),當(dāng)需要啟用時(shí)再明確指定。
4、列舉ASP.NET 頁面之間傳遞值的幾種方式。
答.1.使用QueryString,如....?id=1; response.Redirect()....
2.使用Session變量
3.使用Server.Transfer
4.使用Application
5.使用Cache
6使用HttpContext的Item屬性
7.使用文件
8.使用數(shù)據(jù)庫
9.使用Cookie
5、請解釋ASP.NET中以什么方式進(jìn)行數(shù)據(jù)驗(yàn)證
Aps.net 中有非空驗(yàn)證,比較驗(yàn)證,取值范圍驗(yàn)證,正則表達(dá)式驗(yàn)證及客戶自定義驗(yàn)證五大控件,另還有一個(gè)集中驗(yàn)證信息處理控件
6、WEB控件可以激發(fā)服務(wù)端事件,請談?wù)劮?wù)端事件是怎么發(fā)生并解釋其原理?自動傳回是什么?為什么要使用自動傳回。
在web控件發(fā)生事件時(shí),客戶端采用提交的形式將數(shù)據(jù)交回服務(wù)端,服務(wù)端先調(diào)用Page_Load事件,然后根據(jù)傳回的狀態(tài)信息自動調(diào)用服務(wù)端事件自動傳回是當(dāng)我們在點(diǎn)擊客戶端控件時(shí),采用提交表單的形式將數(shù)據(jù)直接傳回到務(wù)端
只有通過自動傳回才能實(shí)現(xiàn)服務(wù)端事件的機(jī)制,如果沒有自動回傳機(jī)制就只能調(diào)用客戶端事件,而不能調(diào)用服務(wù)端事件
7、請解釋web.config文件中的重要節(jié)點(diǎn)
appSettings包含自定義應(yīng)用程序設(shè)置。
system.web 系統(tǒng)配置
compilation動態(tài)調(diào)試編譯設(shè)置
customErrors自定義錯誤信息設(shè)置
authentication身份驗(yàn)證,此節(jié)設(shè)置應(yīng)用程序的身份驗(yàn)證策略。
authorization授權(quán), 此節(jié)設(shè)置應(yīng)用程序的授權(quán)策略.
8、當(dāng)發(fā)現(xiàn)不能讀取頁面上的輸入的數(shù)據(jù)時(shí)很有可能是什么原因造成的?怎么解決
很有可能是在Page_Load中數(shù)據(jù)處理時(shí)沒有進(jìn)行Page的IsPostBack屬性判斷
9、什么是ASP.net中的用戶控件
答:用戶控件就是.ascx擴(kuò)展名的東西嘍,可以拖到不同的頁面中調(diào)用,以節(jié)省代碼.比如登陸可能在多個(gè)頁面上有,就可以做成用戶控件,但是有一個(gè)問題就是用戶控件拖到不同級別的目錄下后里面的圖片等的相對路徑會變得不準(zhǔn)確,需要自已寫方法調(diào)整.
10、大概描述一下ASP。NET服務(wù)器控件的生命周期
答:初始化 加載視圖狀態(tài) 處理回發(fā)數(shù)據(jù) 加載 發(fā)送回發(fā)更改通知 處理回發(fā)事件 預(yù)呈現(xiàn) 保存狀態(tài) 呈現(xiàn) 處置 卸載
11、ASP.NET中的身份驗(yàn)證有那些?請解釋。
Windows驗(yàn)證:指定Windows身份驗(yàn)證作為默認(rèn)的身份驗(yàn)證模式.如果是任何形式的Internet信息服務(wù)(IIS)身份驗(yàn)證,則使用此模式.
Forms驗(yàn)證:指定基于ASP。NET窗體的身份驗(yàn)證作為默認(rèn)的身份驗(yàn)證模式。
Passport:指定Microsoft Passport身份驗(yàn)證作為默認(rèn)的身份驗(yàn)證模式。
None:不指定身份驗(yàn)證,僅適用于匿名用戶,或者應(yīng)用程序可以處理事件以提供它們自己的身份驗(yàn)證情況。
12、什么是WEB控件?使用WEB控件有那些優(yōu)勢?
WEB控件是能拖放在WEB頁面上的控件
WEB控件分為:內(nèi)部控件, 列表控件, 復(fù)雜控件, 驗(yàn)證控件
WEB控件優(yōu)勢:Web 控件是對象
與對象一樣,Web 控件擁有方法和屬性,并且響應(yīng)事件
一旦將 Web 控件包括在 Web 頁中,就可以設(shè)置其屬性并調(diào)用其方法
可以為 Web 控件編寫服務(wù)器端代碼以響應(yīng)在客戶端上發(fā)生的事件
13、ASP。NET中共有幾種類型的控件?各有什么區(qū)別?
WEB控件分為:內(nèi)部控件, 列表控件, 復(fù)雜控件, 驗(yàn)證控件
內(nèi)部控件--內(nèi)部控件的使用方法與 HTML 控件相同,它們映射到 HTML 元素并通過使用 runat = "server" 屬性在服務(wù)器上執(zhí)行
列表控件--用于在 Web 頁中創(chuàng)建數(shù)據(jù)列表
復(fù)雜控件--當(dāng)希望控件擁有復(fù)雜的功能或使用 HTML 元素?zé)o法創(chuàng)建的功能豐富的用戶界面時(shí),可以使用復(fù)雜控件
驗(yàn)證控件--輸入控件的數(shù)據(jù)需要進(jìn)行準(zhǔn)確性和取值范圍方面的檢查
14、WEB控件及HTML服務(wù)端控件能否調(diào)用客戶端方法?如果能,請解釋如何調(diào)用?
可以,其調(diào)用過程大致如下:用戶使用WEB控件或者h(yuǎn)tml服務(wù)端控件,控件的調(diào)用方法事件被激發(fā),于是服務(wù)器開始自動尋找所匹配的方法代碼,當(dāng)在客戶端找到后解釋執(zhí)行客戶端的方法代碼,完畢后繼續(xù)返回服務(wù)器執(zhí)行剩余代碼.
15、ASP。NET與ASP相比有什么優(yōu)勢?
ASP的缺點(diǎn):
VBScript和JavaScript是在ASP中僅可使用的兩種腳本語言。它們是基本的非類型化語言。在ASP中不能使用強(qiáng)類型語言.
ASP頁面需要解釋,使得它執(zhí)行速度較慢。
ASP頁面非常凌亂。
在使用ASP創(chuàng)建WEB應(yīng)用程序時(shí),程序員和設(shè)計(jì)人員必須在同一文件上一起工作。
在ASP中,必須通過編寫代碼來提供所需的任何功能。
在ASP中沒有對代碼給予太多的關(guān)注。
在ASP中沒有調(diào)試機(jī)制。
在ASP中。必須停止WEB服務(wù)器才能安裝DLL的新版本,并且在應(yīng)用程序中使用DLL的新版本之前,必須先在注冊表中注冊它,而且,DLL注冊過程非常復(fù)雜。
ASP.NET的優(yōu)點(diǎn):
ASP。NET中支持強(qiáng)類型語言.
ASP。NET頁將被編譯而不是解釋,這樣它們的執(zhí)行速度就比ASP頁快。
ASP。NET提供聲明性服務(wù)器控件。
ASP。NET通過繼承機(jī)制來支持代碼的重用。
ASP。NET具有Trace的內(nèi)置方法,可以幫助對頁面進(jìn)行調(diào)試。
在ASP。NET中,置于應(yīng)用程序的BIN目錄中的任何組件將自動對應(yīng)用程序可用.
16、請解釋一個(gè)WEB頁面中代碼執(zhí)行次序。
1創(chuàng)建頁面和控件:2.從查看狀態(tài)中恢復(fù)頁面和控件的狀態(tài) (只限于回傳):3.根據(jù)用戶輸入更新頁面控件 (只限于回傳):4.頁面驗(yàn)證 (只限于回傳):5.引發(fā)事件:6.頁面和控件的狀態(tài)保存到查看狀態(tài)中:7.頁面和控件轉(zhuǎn)換到 HTML:8.釋放頁面和控件:
17、請解釋什么是上下文對象,在什么情況下要使用上下文對象
上下文對象(context),指的是與項(xiàng)目相關(guān)連的各種項(xiàng)目信息,它是針對你所處的當(dāng)前文件提出的,可以看作是項(xiàng)目各種信息的總和,可以設(shè)置和獲取,當(dāng)你想得到一些需要的項(xiàng)目信息或者設(shè)置一些參數(shù)以便以后項(xiàng)目中使用時(shí),可以用上下文對象.
聯(lián)系客服