Asp.net mvc 如何在ASP.NET mvc中的某些页面上切换到新版本的javascript库

Asp.net mvc 如何在ASP.NET mvc中的某些页面上切换到新版本的javascript库,asp.net-mvc,razor,Asp.net Mvc,Razor,我有一个现有的项目,在新的页面上,如果库不向后兼容,我希望在不破坏其他页面的情况下包含JavaScript库的新版本 实现这一目标的最佳方式是什么?我希望能够设置一个变量,如:useBootStrapCss2或类似的东西来使用新的库 目前,库是通过使用共享部分包含在主共享布局页面(命名资源)中的方式包含的 我预见到的问题是,如果将变量设置在视图的顶部,那么该变量将不在共享视图的范围内,因此无法切换到使用正确的部分资产。老实说,我不会选择将变量设置为切换脚本版本。从长远来看,这可能会变得非常混乱

我有一个现有的项目,在新的页面上,如果库不向后兼容,我希望在不破坏其他页面的情况下包含JavaScript库的新版本

实现这一目标的最佳方式是什么?我希望能够设置一个变量,如:useBootStrapCss2或类似的东西来使用新的库

目前,库是通过使用共享部分包含在主共享布局页面(命名资源)中的方式包含的


我预见到的问题是,如果将变量设置在视图的顶部,那么该变量将不在共享视图的范围内,因此无法切换到使用正确的部分资产。

老实说,我不会选择将变量设置为切换脚本版本。从长远来看,这可能会变得非常混乱

你有几个干净(er)的选择

创建一个单独的布局,基本上是第一个布局的克隆,但使用更新的脚本。将此布局用于新页面,同时缓慢迁移现有页面。

@if (IsSectionDefined("ScriptReferences")){   
    @RenderSection("ScriptReferences")   
}   
else {  
    <script src="blah.js"></script>  
}
这个选项避免了条件逻辑的麻烦,但是。。。这意味着您需要维护两个布局页面。这可能没什么大不了的,但如果旧的布局能长期使用,那可能是个坏主意

在布局页面上创建一个包含默认内容的内容区域。

@if (IsSectionDefined("ScriptReferences")){   
    @RenderSection("ScriptReferences")   
}   
else {  
    <script src="blah.js"></script>  
}
@if(IsSectionDefined(“ScriptReferences”){
@RenderSection(“脚本引用”)
}   
否则{
}

这是一个非常灵活的选项,允许您在每页的基础上重写。可能还有其他选择,但这些是我脑海中能想到的最好的选择。

老实说,我不会选择将变量设置为切换脚本版本。从长远来看,这可能会变得非常混乱

你有几个干净(er)的选择

创建一个单独的布局,基本上是第一个布局的克隆,但使用更新的脚本。将此布局用于新页面,同时缓慢迁移现有页面。

@if (IsSectionDefined("ScriptReferences")){   
    @RenderSection("ScriptReferences")   
}   
else {  
    <script src="blah.js"></script>  
}
这个选项避免了条件逻辑的麻烦,但是。。。这意味着您需要维护两个布局页面。这可能没什么大不了的,但如果旧的布局能长期使用,那可能是个坏主意

在布局页面上创建一个包含默认内容的内容区域。

@if (IsSectionDefined("ScriptReferences")){   
    @RenderSection("ScriptReferences")   
}   
else {  
    <script src="blah.js"></script>  
}
@if(IsSectionDefined(“ScriptReferences”){
@RenderSection(“脚本引用”)
}   
否则{
}
这是一个非常灵活的选项,允许您在每页的基础上重写。也许还有其他选择,但这些是我脑海中能想到的最好的选择