取得使用者控制項(ASCX)的clientID

先前寫asp的時候大家都知道把常用的固定版面的群組另外寫一支asp的檔案

要用的時候就include他就好了

先前寫asp的時候大家都知道把常用的固定版面的群組另外寫一支asp的檔案

要用的時候就include他就好了

 

.NET有另外的做法就是自定控制項自定複合控制項

自定複合控制項又切割出一個叫做使用者控制項的功能來

cloudio在實做上覺得使用者控制項比較容易做

在修改時也能馬上看到版面的編排位置

比較方便

也比較容易寫一些

 

cloudio先前做了一個AJAX的鄉鎮市3層下拉選單在ascx中

只要從方案總管拉進頁面就可以使用了

還蠻方便的

最近在要拿來用在案子上之後發現

在使用者填寫完表單要送出之前的check的javascript中不知道要怎麼抓ascx中的控制項的ID

真是尷尬...

然後google也找不到答案

所以就自己摸索囉

 

一般我們知道抓控制項在client端的ID名稱就是ID名稱.clientID就好了

可是放到ascx中的控制項就比較有問題了

在.cs中的話當然可以先宣告一個控制項去FindControl使用者控制項中的該控制項

在確認剛宣告的控制項不是null後就直接取得他的clientID在組javascript字串就好了

可是cloudio又不想在.cs中去組javascript的驗證字串

所以cloudio在這支抓鄉鎮市資料的ascx的cs檔中加了幾個public的property

 


public string getAreaClientID
{
    get { return area.ClientID; }
}

然後在頁面中的javascript中只要

 


<script type="text/javascript">
    alert("<%=countyInfo1.getAreaClientID %>");
</script>

countInfo1是ascx的id

就可以用比較輕鬆簡單的方法取得該控制像在用戶端的id了

而且在server端再驗證一次的時候也比較快

一樣可以省掉FindControl的時間

 

其實可以看的出來ascx本身也是一個物件

被拉進頁面的時候就註冊然後被實做出來了

裡面所有public的method跟property都是可以被取得的

靈活性可以說是蠻高的