Javascript库不是';t已加载以用于已加载页面的部分视图

Javascript库不是';t已加载以用于已加载页面的部分视图,javascript,c#,html,asp.net-mvc,Javascript,C#,Html,Asp.net Mvc,我正在对组成表单的视图中的选项卡实现延迟加载功能 但是,有时视图不是延迟加载的,例如在出现ModelState错误的情况下,我调用Html.Action()来检索视图 为了做到这一点,我询问模型,看看相关属性是否为空: @if (Model.CaseDetails != null) { @Html.Action("LoadCaseDetails", new { id = Model.CaseManagement.Id, model = Model.CaseDetails }) } els

我正在对组成表单的视图中的选项卡实现延迟加载功能

但是,有时视图不是延迟加载的,例如在出现
ModelState
错误的情况下,我调用
Html.Action()
来检索视图

为了做到这一点,我询问模型,看看相关属性是否为空:

@if (Model.CaseDetails != null)
{
    @Html.Action("LoadCaseDetails", new { id = Model.CaseManagement.Id, model = Model.CaseDetails })
}
else
{
    //Empty as later added in with ajax call
}
当我在稍后的ajax中加载视图时,这很好,但是如果视图与页面一起加载,则相关的javascript库尚未加载,因此依赖这些库的javascript将失败。

除了在页面开头加载js库之外,我如何解决这个问题


请注意,我无法轻松地将javascript放在主视图中,因为它依赖于仅在呈现视图时加载的数据,并且要添加到这一点上,我的实际需求比我透露的更复杂(我们在其他延迟加载选项卡中的选项卡中有延迟加载)因此,这种方法实际上并不可行。

您必须推迟JavaScript的执行。有很多方法可以做到这一点。但是,最好使用JS模块加载库,如。这将需要您进行一些初步的工作来熟悉它的工作方式和设置您的配置,但一旦您这样做了,它的可维护性和功能性将大大提高

最简单的方法,尽管可能不是最好的方法,是简单地利用
窗口。onload

(function () {
    var onload = window.onload;
    window.onload = function () {
        onload();

        // put your js code here that should only happen when everything is loaded
    };
})();

您正在使用asp.net,所以不能将库添加到bundle.config文件中吗?添加一个自定义脚本包,并在局部视图中呈现它。@Axel这有什么关系?正如我在问题中提到的,是的,我可以在页面开始时加载所有库,但这会导致所有页面加载速度变慢(客户端必须在
Html
之前下载所有js库)@SiddharthPandey这听起来是个合理的想法,如果没有其他问题,我会这样做,谢谢。@RyanSearle请也粘贴您需要渲染的js文件代码。