捆綁你的javascript文件,你應該養成這樣做的習慣。 Bundling可幫助您管理文件版本(以便在更新緩存文件時進行刷新),還可以爲您縮小文件,使您的數據對客戶端的處理速度更快。
在你App_Start文件夾中,有一個叫做BundleConfig.cs文件將是這個樣子:
public class BundleConfig
{
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles)
{
/* ===================================== Scripts ===================================== */
bundles.Add(
new ScriptBundle("~/Script/JQuery/JQuery")
.Include("~/Scripts/JQuery/jquery-{version}.js")
);
bundles.Add(
new StyleBundle("~/bundles/styles/highslide")
.Include("~/Highslide/Highslide-ie6.css")
.Include("~/Highslide/Highslide.css")
);
}
}
在上面的例子中,我們包括JavaScript文件(此版本由自動填充框架)和一個名爲Highslide的css庫。你可以看到在這個庫中我們可以包含多個文件。另外,請注意這些文件如何全部位於不同的目錄中。這使您可以根據自己的情況構建項目。
現在,爲了在您的視圖所有你需要做的使用是這樣的:
@Scripts.Render("~/Script/JQuery/JQuery")
@Styles.Render("~/bundles/styles/highslide")
雖這麼說,你現在可以在您的視圖做到這一點:
@if(ViewBag.UserName != null)
{
@Scripts.Render("~/Script/JQuery/JQuery")
}
至於HTML編碼器的問題,爲什麼不簡單地把你的JS文件中的JavaScript變量,然後聲明和設置變量在視圖中,然後再包含該文件。就像這樣:
@if(ViewBag.UserName != null)
{
<script type="text/javascript">
var msg = 'Weclome, ' + @Encoder.JavaScriptEncode(ViewBag.UserName, false)!;
</script>
@Scripts.Render("~/Script/MyScript")
}
你的腳本文件可以是這樣的:
$(function(){
$("#welcome-message").html(msg).hide().show('slow');
})