先前寫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都是可以被取得的
靈活性可以說是蠻高的