Jquery 刷新部分视图后未加载Js文件

Jquery 刷新部分视图后未加载Js文件,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我有一个简单的局部观点: <div class="well"> <h3> <strong>@Model.Name</strong> <span class="pull-right label label- primary">@Model.AverageRaiting.ToString("# stars")</span> </h3> <span clas

我有一个简单的局部观点:

<div class="well">
    <h3>
        <strong>@Model.Name</strong>
        <span class="pull-right label label- primary">@Model.AverageRaiting.ToString("# stars")</span>
    </h3>
    <span class="lead">@Model.Description</span>
    @Html.DialogFormLink("Update", Url.Action("UpdatePhoto", new {id = @Model.PhotoId}), "Update Photo", Url.Action("Photo"))
    @Html.Action("InitializeAlerts")
</div>
@section scripts{
    <script src="~/Scripts/reload.alerts.js"></script>
}
第一次一切都好。但是,在我将部分视图替换为上面的另一个视图之后,自定义脚本reload.alerts.js就不起作用了。此脚本用于@Html.ActionInitializeAlerts操作。 initializelerts方法只返回一个名为_Alert的局部视图。 我该怎么解决这个问题? 谢谢。

您不应该在局部视图中使用@section脚本

如果您在主视图中渲染它,一切都会正常工作,因为Razor知道将脚本放在布局上的什么位置,但当您刷新时,如果您基本上进行ajax调用,您将获得行html

由于您只获得部分页面,而没有布局剃刀,所以只需剪切这一行,这样您的脚本链接就不会出现在客户端

您有两种选择:

就像@Alorika说的,你应该把你的脚本放在主视图中。但是可能会有问题,这取决于你的脚本做什么以及如何做。这是一个很好的实践,我建议使用它。如果脚本不起作用,你应该看看它落在哪里。 删除@section脚本并将脚本链接放在不带它的位置。我不确定,但我怀疑,根据您的编写方式,您的脚本也可能无法以这种方式工作。
你试过把剧本放在主视图而不是局部视图吗?@Alorika是的。为了确保不是因为这个,我在两个视图中都包含了它。你能从reaload.alerts.js和_alertpartial view发布你的代码吗。也许您在部分视图中有动态绑定问题。@freshbm我为这些问题创建了一个新问题。谢谢!如果我删除该节,它将起作用。正如你所说,这是一种坏习惯。那么,如何更新js文件以使其在主视图中工作?@user3818229 I gess最好再问一个问题,您将脚本和所有细节放在哪里。是的,当然!