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

时间:2015-12-24 09:54:23

标签: 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 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.Action("InitializeAlerts")操作。 InitializeAlerts方法只返回名为_Alert的局部视图。 我该怎么做才能解决这个问题? 感谢。

1 个答案:

答案 0 :(得分:4)

您不应在部分视图中使用@section scripts

如果你在主视图中渲染它,一切正常,因为Razor知道你的脚本放在_Layout的哪个位置,但当你刷新时如果你基本上调用ajax并且你得到了行html。

由于您只获得了没有_Layout Razor的部分页面,因此只需剪切此行,以便您的脚本链接甚至无法访问客户端。

您有两个选择:

  1. 喜欢@Alorika说你应该把你的脚本放在主视图中。但是可能存在问题,这取决于你的脚本做什么以及它是如何做的。这是一个很好的做法,我建议使用它。如果脚本不起作用,你应该看它落在哪里。
  2. 删除@section scripts并在没有它的情况下放置脚本链接。我不确定,但我怀疑当你的剧本以这种方式工作时,有一些可能性取决于你的编写方式。