捆绑你的javascript文件,无论如何你都应该养成这样做的习惯。捆绑可以帮助您管理文件的版本(以便在您更新它们时刷新缓存的文件),还可以为您缩小文件,使您的数据更快地提供给客户端。
在您的 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 编码器问题,为什么不简单地将 javascript 变量放入 JS 文件中,然后在包含文件之前在视图中声明和设置变量。像这样:
@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');
})