webControls與用戶端指令碼路徑

來源:互聯網
上載者:User

標籤:電子書   伺服器   檔案夾   版本號碼   預留位置   

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

650) this.width=650;" src="http://images2015.cnblogs.com/blog/441298/201612/441298-20161212083111104-433762712.png" style="margin:0px;padding:0px;border:0px;width:618px;" />

650) this.width=650;" src="http://images2015.cnblogs.com/blog/441298/201612/441298-20161212083111886-1268979578.png" style="margin:0px;padding:0px;border:0px;width:618px;" />

   

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指令碼的引用

650) this.width=650;" src="http://images2015.cnblogs.com/blog/441298/201612/441298-20161212083112745-2126014803.png" style="margin:0px;padding:0px;border:0px;width:618px;" />

可以得出已經把指令檔嵌入到程式集裡面,通過webresource.axd來擷取到對應的資源。實際上這裡可內嵌資源不單指js了,還可以是圖片檔案。

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

發現裡面有一行代碼是把js檔案註冊進去

650) this.width=650;" src="http://images2015.cnblogs.com/blog/441298/201612/441298-20161212083113354-1066215522.png" style="margin:0px;padding:0px;border:0px;width:618px;" />

於是自己也嘗試了一下

650) this.width=650;" src="http://images2015.cnblogs.com/blog/441298/201612/441298-20161212083113964-1216184227.png" style="margin:0px;padding:0px;border:0px;width:618px;" />

ClientScript是ClientScriptManager的一個執行個體,js的檔案名稱是js2.js,前面需要附帶設這個程式集的預設命名空間 這裡用到的,js2.js檔案是放在網站根目錄下。

650) this.width=650;" src="http://images2015.cnblogs.com/blog/441298/201612/441298-20161212083114573-731049998.png" style="margin:0px;padding:0px;border:0px;" />

檔案 的屬性是這樣設定

650) this.width=650;" src="http://images2015.cnblogs.com/blog/441298/201612/441298-20161212083115276-1632564834.png" style="margin:0px;padding:0px;border:0px;" />

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

650) this.width=650;" src="http://images2015.cnblogs.com/blog/441298/201612/441298-20161212083116151-1153410737.png" style="margin:0px;padding:0px;border:0px;width:618px;" />

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

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


webControls與用戶端指令碼路徑

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.