發(fā)文章
發(fā)文工具
撰寫
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
MSDN上解釋Page.FindControl(string id)方法用于查找指定ID的控件。例如:
<asp:TextBox id=
"Email"
runat=
"server"
></asp:TextBox>
TextBox txt =
this
.Page.FindControl(
)
as
TextBox;
txt.Text =
"abc@163.com"
;
該方法有點(diǎn)類似javascript中的getElementById(string)。但實(shí)際上,經(jīng)過試驗(yàn)發(fā)現(xiàn)id這個(gè)參數(shù)并不是TextBox控件的ID,而是TextBox控件生成HTML代碼后的name屬性。如下代碼:
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
其生成的HTML代碼為:
<input name="TextBox1" type="text" id="TextBox1" />
我們看到,在默認(rèn)情況下,控件TextBox的id屬性對應(yīng)生成后的input標(biāo)簽的id屬性和name屬性(id == name)。當(dāng)有母版頁存在的時(shí)候,情況就變得不一樣了。當(dāng)出現(xiàn)如下模板頁時(shí):
<asp:ContentPlaceHolder ID="BodyContent" runat="server"></asp:ContentPlaceHolder>
"RealName"
生成的HTML變?yōu)榱耍?lt;input name="ctl00$BodyContent$RealName" type="text" id="BodyContent_RealName" />
此時(shí)我們使用this.Page.FindControl("RealName"),系統(tǒng)會返回null。我們逐一嘗試,this.Page.FindControl("BodyContent_RealName"),系統(tǒng)仍舊返回null。this.Page.FindControl("ctl00$BodyContent$RealName"),OK,正常了,天下太平了。
通過以上調(diào)試過程,我們發(fā)現(xiàn)Page.FindControl(string id)方法的id參數(shù)實(shí)質(zhì)上是控件生成HTML代碼后的name屬性。默認(rèn)情況下(沒有模板頁時(shí)),控件的ID屬性會同時(shí)賦值給控件生成的對應(yīng)html的標(biāo)簽的name和id屬性。所以,此時(shí)Page.FindControl(string id)方法的id參數(shù)只要輸入控件的ID屬性即可。否則則需要輸入控件生成HTML標(biāo)簽后的name屬性。
<asp:ContentPlaceHolder ID=
"BodyContent"
ClientIDMode=
"Static"
></asp:ContentPlaceHolder>
<asp:TextBox id="RealName" runat="server"></asp:TextBox>
<input name="ctl00$BodyContent$RealName" type="text" id="RealName">
我們發(fā)現(xiàn),增加如上屬性后,生成的HTML標(biāo)簽中,id屬性保持了不變,但是name屬性仍舊不太友好,聊勝于無吧,畢竟大多數(shù)時(shí)候我們使用js時(shí)都是使用getElementById(string)而不是使用getElementByTagName(string)
來自: 昵稱10504424 > 《工作》
0條評論
發(fā)表
請遵守用戶 評論公約
母版頁和內(nèi)容頁的數(shù)據(jù)傳遞 .
將FindControl方法例子中的MasterPage.master更改如下:< %@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage1.master.cs" Inherits="Maste...
訪問用戶控件
訪問用戶控件訪問用戶控件中的textbox,label等的值1.最好是在控件里增加一個(gè)public的屬性訪問 public string name //name為屬性名,自己起名{然后label.Text = 用戶控件ID.name或 用戶控件ID.name =la...
ASP.NET2.0中用Gridview控件操作數(shù)據(jù)
ASP.NET2.0中用Gridview控件操作數(shù)據(jù)。<asp:TemplateField> <ItemTemplate> ?。糰sp:Label ID="CompanyNameLabel" Runat="Server"><%# Eval("CompanyName")...
[轉(zhuǎn)]asp.net 母版頁使用詳解 - 墨藝的日志 - 網(wǎng)易博客
一、在母版頁中編寫后臺代碼,訪問母版頁中的控件: 與普通的aspx頁面一樣,雙擊按鈕即可編寫母版頁中的代碼 二、在內(nèi)空頁面中編...
如何在前臺的HTML標(biāo)記中獲取后臺的變量
如何在前臺的HTML標(biāo)記中獲取后臺的變量第一種方法(用服務(wù)器端控件):前臺:<asp:TextBox ID="TextBox2" runat="server" Text=''<%# myName %>''><...
ASP.NET開發(fā):表單詳解
指令可以為兩個(gè)互斥屬性之一:VirtualPath 或 TypeName.VirtualPath指提交頁的URL,TypeName則指明調(diào)用頁的類型.PreviousPageType指令使目標(biāo)頁P(yáng)reviousPage屬性返回給定路徑上的頁面相同類型(或者TypeNam...
[翻譯]你或許還為聽說過的一些ASP.NET 2.0要訣 - 從這里開始出發(fā)....——lxinxuan‘s Blog - 博客園
If you have a page called Default.aspx that exposes a publicproperty that returns a Textbox that is defined in the page, the pagethat data is posted to (lets call it SearchResults.aspx) c...
asp.net讀取GridView中某行或某單元格值
asp.net讀取GridView中某行或某單元格值TextBox10.Text = GridView1.Rows[e.NewSelectedIndex].Cells[0].Text;試試 謝謝阿多的回答,試過了,一樣的結(jié)果.本來Text就可以省略掉的吧...up單元格里是不是還...
.net之Datalist控件
<asp:DataList ID="DataList1" runat="server" DataKeyField="Id" DataSourceID="AccessDataSource1" OnItemCommand="DataList1_ItemCommand...
微信掃碼,在手機(jī)上查看選中內(nèi)容