用 ASP.NET 製作的專案, 在專案版本及相關工具多次更新後, 往往會因為更新的內容版本問題而產生困擾, 如果將 javascript腳本、image圖檔、css樣式檔 內嵌至 dll 檔, 在發行時一併發行, 這樣是不是就不容易出錯也相對便利很多呢? 作法如下, 提供您參考!!
Step1:
在方案總管中找出要內嵌的 Javascript 腳本檔, 用滑鼠點選它後, 在屬性視窗中可以找到屬性 [建置動作], 將其值改為 [內嵌資源]。
Step2:
在專案的 Properties(屬性) 節點下找到 AssemblyInfo.cs 檔, 逐一的把要內嵌的 Javascript 腳本檔以如下的設定方式加入AssemblyInfo.cs 檔中:
[assembly: System.Web.UI.WebResource("Namespace.Javascriptname1.js", "text/js")]
[assembly: System.Web.UI.WebResource("Namespace.Javascriptname2.js", "text/js")]
Step3:
有使用 ScriptManager 者, 註冊 Javascript 腳本檔 需透過 Scriptmanager,透過 Page.ClientScript 註冊可能會導致檔案沒有加進 src 中。所以撰寫了一支公用的class,稱做RegisterJS.cs。
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
namespace Joey {
public class RegisterJS {
/// <summary>
/// Registers the client script include.
/// 判斷當頁面有ScriptManager時,應透過ScriptManager註冊JS,
/// 使用Page.ClientScript註冊會在UpdatePanel Partial Render時遺漏參考。
/// </summary>
/// <param name="NowPage">The now page.</param>
/// <param name="JavascriptUniqueName">Name of the javascript unique.</param>
/// <param name="FileUrl">The file URL.</param>
public static void RegisterClientScriptInclude(object NowPage,string JavascriptUniqueName, string FileUrl) {
Page objPage = NowPage as Page;
if (objPage != null) {
ScriptManager sm = ScriptManager.GetCurrent(objPage);
if (sm == null)
objPage.ClientScript.RegisterClientScriptInclude(JavascriptUniqueName, FileUrl);
else
ScriptManager.RegisterClientScriptInclude(objPage, objPage.GetType(), JavascriptUniqueName, FileUrl);
}
}
}
}
Step4:
接著就是要把原本使用Page.ClientScript.RegisterClientScriptInclude的方式,改為透過RegisterJS來註冊。路徑的部分,改使用GetWebResourceUrl()來取得。
- string strJsLoc = Page.ClientScript.GetWebResourceUrl(this.GetType(), "Namespace.Javascriptname1.js");
- RegisterJS.RegisterClientScriptInclude(this.Page, "Javascriptname1", strJsLoc);
Step5:
接著只需要建置專案,就會直接將方才設定的 Javascript 腳本檔 內嵌到 dll 檔。
參考自: https://dotblogs.com.tw/hatelove/archive/2009/01/09/6707.aspx
留言列表