程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> webControls與客戶端腳本路徑,webcontrols腳本

webControls與客戶端腳本路徑,webcontrols腳本

編輯:關於.NET

webControls與客戶端腳本路徑,webcontrols腳本


網上有用的資料不多,在一本電子書中摘抄了內容如下

   

webControls配置節只有一個clientScriptsLocation屬性,此屬性用於指定ASP.NET客戶端腳本的默認存放路徑。這些文件是包含在HTML代碼生成的ASPX頁面時這些需要的客戶端功能,如智能導航和客戶端控件驗證。

<webControls clientScriptsLocation="/aspnet_client/{0}/{1}/"/>

上述代碼就是<webControls>的默認內容。clientScriptsLocation的內容就是用於搜索被包含的腳本。aspnet_client文件夾是當你安裝ASP.NET是在Web服務器的跟目錄下自動生成的。兩個占位符用於代表子文件夾的名字,這個名字有可能在將來的ASP.NET版本中會更改。第一個占位符總是設置成system_web。第二個占位符是.NET Framework的版本號。

ASP.NET 4不使用這個文件夾來儲存客戶端腳本文件。實際上客戶端腳本文件以資源的形式嵌入到system.web程序集中。並且通過webresource.axd HTTP handler注入到頁面中。

你可以使用客戶端腳本文件夾來保存給自定義的ASP.NET控件使用的腳本文件。

感覺這個真的已經被廢棄了,並且在.NET Framework4.6的源碼中查看webControlsSection類時也沒發現有任何代碼對這個類進行調用了,鄙人嘗試過在一個WebForm頁面中拖了一個驗證控件RequiredFieldValidator,在生成的html代碼中多了兩個js腳本的引用

可以得出已經把腳本文件嵌入到程序集裡面,通過webresource.axd來獲取到對應的資源。實際上這裡可嵌入的資源不單指js了,還可以是圖片文件。

出於好奇我就看了一下RequiredFieldValidator的代碼,

發現裡面有一行代碼是把js文件注冊進去

於是自己也嘗試了一下

ClientScript是ClientScriptManager的一個實例,js的文件名是js2.js,前面需要附帶設這個程序集的默認命名空間 這裡用到的,js2.js文件是放在網站根目錄下。

文件 的屬性是這樣設置

運行了頁面看看生成的html多了一個js的引用

疑惑的是為啥ValidatorBase裡面的嵌入js時不需要用到不需要命名空間,MSDN上的例子也是中規中矩地加上了命名空間。難道還有別的方式給它加命名空間?

但是還是有點不服氣,看看原有的aspnet_client怎麼弄出來,後來又發現了通過aspnet_regiis,可以添加aspnet_client。嘗試了確實可以加,但是沒啥效果,當初還猜想會不會是配置文件的webControls配置會影響生成文件夾的名字,後來發現我的猜想錯了,還是生成aspnet_client。看來還是在.NET 1.0版本中使用,後續版本就換用webresource.axd。而且現在也用ASP.NET MVC,這個屬於在webForm中使用,現在鄙人還是感覺把js放出來不嵌入到程序集裡面還是不方便,修改了js又要編譯代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved