Asp.net mvc 4 如何在ASP.NET MVC中有条件地包含脚本引用

Asp.net mvc 4 如何在ASP.NET MVC中有条件地包含脚本引用,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我有一个ASP.NET MVC web应用程序,其本质是非常动态的: 控制器从某个服务加载数据。基于此响应,它调用其他子控制器的动作,这些动作可能会呈现也可能不会呈现某些视图。服务的响应取决于许多因素,可能会改变页面的许多输出 现在我们所处的情况是,只有在呈现某个子视图时,我们才需要包含一个javascript包: 如果某个子控制器呈现某个子视图,则必须包含脚本引用 当未呈现此特定子视图时,我们不能在页面中包含此捆绑包 子视图的可用性由其他一些子控制器远程调用动态确定 该脚本绝对需要包含在页面

我有一个ASP.NET MVC web应用程序,其本质是非常动态的:

控制器从某个服务加载数据。基于此响应,它调用其他子控制器的动作,这些动作可能会呈现也可能不会呈现某些视图。服务的响应取决于许多因素,可能会改变页面的许多输出

现在我们所处的情况是,只有在呈现某个子视图时,我们才需要包含一个javascript包:

  • 如果某个子控制器呈现某个子视图,则必须包含脚本引用
  • 当未呈现此特定子视图时,我们不能在页面中包含此捆绑包
  • 子视图的可用性由其他一些子控制器远程调用动态确定
  • 该脚本绝对需要包含在页面标题中,因为它执行某些代码,如果以后执行这些代码(设置document.domain和stuff),将导致问题

我们如何以干净和MVCy的方式实现这一点?

“子控制器[…]改变了很多页面的输出[…]子视图[…]干净和MVCy的方式”-您的问题自相矛盾。;-)不过,您可能只想将其放在
视图包中
。您的_布局中的
@RenderSection(“headerscript”required:false)
会为您解决这个问题吗?@Billdr没有想到这一点,但这似乎是个好主意。将检查这在我们的环境中是否有效。@CodeCaster您如何构建一个非常动态、用户可更改的CMS,而不将每个可重用模块划分为单独的子客户/部分视图组合,并以更灵活的方式将它们与用户给定的数据组合起来?@Billdr它不起作用。由于分离模块和分层子视图的解耦,系统告诉我无法调用直接使用RenderSection的视图,该视图需要将节内容从其子视图传递到布局。