爲我的自定義ASP.net服務器控件生成的HTML代碼爲子控件生成name屬性,而不是id屬性。類似這樣的:生成的ASP.net子控件的HTML「name」屬性代替唯一的「ID」屬性
<span id="GridView2_ctl02_editdis">
<input type="text" name="GridView2$ctl02$editdis$ctl00"/>
</span>
自定義控件本身的ID顯然是正確的。
什麼是更奇怪的是,這個ID確實產生了有時(我不知道在什麼條件下)。但帶有該ID的FindControl()
在服務器端返回null。 FindControl()
與名稱屬性的值工作得很好。
事情是這樣的:
<span class="TextBox" id="GridView2_ctl02_editdis">
<input type="text" id="GridView2_ctl02_editdis_ctl00" name="GridView2$ctl02$editdis$ctl00"/>
</span>
針對上述情況,FindControl("GridView2$ctl02$editdis$ctl00")
做工精細,FindControl("GridView2_ctl02_editdis_ctl00")
沒有。
如何確保一致且可預測的ID?
嗯。我正在使用html ID(來自REQUEST [「__ LASTFOCUS」))將焦點從ASP.net頁面恢復到正確的控件。我現在意識到從一個ID到另一個不存在這樣直接的翻譯。 用'$'替換'_'是否可以跨.net版本移植? – sandesh247 2009-04-11 18:53:13