一、 MVC2.0中%中各種符號的不同含義
1涵防、<%=%> 里面放的變量名,
如:<p>Welcome to Beginning ASP.NET 3.5 on <%=DateTime.Now.ToString() %></p>
2、 <%#%> 這里是數(shù)據(jù)的綁定
一般在asp:repeater抄沮、datalist等asp容器內(nèi)使用,通過如repeater.datasource=DataSet;repeater.Bind();綁定容器和數(shù)據(jù)源岖瑰。
如 :<%# DataBinder.(Container.DataItem, "ClassName") %>
3叛买、<%@ %> 表示:引用
如在很多.aspx頁面中,都可以看到如下的代碼:
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" %>
4蹋订、<%: %>
這種方式是ASP.NET4.0中新加入的綁定方式率挣,常用于MVC中,但普通webform中也可使用辅辩。他的功能其實(shí)就是對綁定的值進(jìn)行一下編碼难礼,因此,一下兩者是等同的:
<%= Server.HtmlEncode("<b>test</b>") %>
<%: "<b>test</b>" %>;
5玫锋、<%%>中間一般放函數(shù)或者方法蛾茉,典型的asp程序?qū)懛ā?br> 在百分號內(nèi) , 如果百分號后面不帶任何符號(冒號、等號撩鹿、井號) , 即表示要執(zhí)行一段代碼而已谦炬,此處不包含任何輸出信息;若帶符號节沦,即表示執(zhí)行此處的代碼键思,并且將執(zhí)行后返回的值綁定(或者顯示)在此處。
6甫贯、<%= %>和<%# %>有點(diǎn)區(qū)別吼鳞。
在后臺代碼中,與第一種方式唯一不同的叫搁,就是需要調(diào)用DataBind方法赔桌。只有執(zhí)行了相應(yīng)控件的DataBind方法,前臺代碼中這些控件中使用<%# %>的綁定才會發(fā)生(并且控件內(nèi)部的所有綁定也會發(fā)生渴逻,比如又嵌套了一個(gè)綁定后臺數(shù)據(jù)的控件)疾党,否則得話將不會被賦值,而是默認(rèn)空值惨奕。上面我們用的是Page的DataBind方法雪位,那么整個(gè)頁面所有綁定都會執(zhí)行。當(dāng)然梨撞,如果我們只執(zhí)行DataList1或者DropDownList1的DataBind方法雹洗,那么只有相應(yīng)控件的綁定才會發(fā)生香罐。需要注意的是,這里說的需要執(zhí)行DataBind包括了顯示和隱式執(zhí)行队伟,有些數(shù)據(jù)綁定類控件穴吹,當(dāng)它們通過 DataSourceID 屬性綁定到數(shù)據(jù)源控件時(shí),會通過隱式調(diào)用 DataBind 方法來執(zhí)行綁定嗜侮。這時(shí)就不必顯示的再次調(diào)用了港令。
兩者區(qū)別:
兩種綁定方式上,他們的約束基本相同锈颗,都要求與屬性匹配顷霹,出現(xiàn)在他們可以出現(xiàn)的位置。后者的使用位置更廣泛击吱,尤其是支持服務(wù)器端控件和綁定數(shù)據(jù)集合淋淀。后臺代碼方面,后者需要調(diào)用DataBind才能完成綁定覆醇,前者則沒有這方面要求朵纷。這里主要區(qū)別一下兩者在執(zhí)行機(jī)制上的區(qū)別:<%=...%>是在程序執(zhí)行時(shí)調(diào)用(應(yīng)該是在頁面的RenderControl事件過程中完成的,也就是通常情況下我們可以看到的后臺代碼都執(zhí)行完畢后再去到前臺代碼中進(jìn)行賦值綁定)永脓,而<%#... %>是在DataBind()方法之后被調(diào)用袍辞,一旦調(diào)用了DataBind(),則它對應(yīng)的控件將綁定變量常摧,因此搅吁,請注意:如果在DataBind()后再修改變量,那么綁定的就不是最新值了落午,這就需要在完成變量的賦值后谎懦,再去DataBind()。其實(shí)這兩種方式溃斋,它的運(yùn)行過程可以在VS中通過設(shè)置斷點(diǎn)來看看界拦,看兩者的綁定賦值分別是在什么時(shí)候發(fā)生的。