jquery - 部分 View 刷新后js文件未加载

标签 jquery asp.net-mvc

我有简单的局部 View :

<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>
}

第一次一切都好。但是,当我将部分 View 替换为上面的另一个 View 后,自定义脚本 "reload.alerts.js" 不起作用。此脚本用于 @Html.Action("InitializeAlerts") 操作。 InitializeAlerts 方法仅返回一个名为 _Alert 的分部 View 。 我该怎么做才能解决这个问题? 谢谢。

最佳答案

您不应在部分 View 中使用@section 脚本

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

由于您只获得没有 _Layout 的部分页面,Razor 只是剪掉了这一行,因此您的脚本链接甚至不会到达客户端。

您有 2 个选择:

  1. 就像 @Alorika 所说,你应该将脚本放在主视图中。但可能会出现问题,这取决于您的脚本的作用以及它是如何做的。这是很好的做法,我建议使用它。如果脚本不起作用,您应该查看它失败的地方。
  2. 删除@section script并将脚本链接去掉。我不确定,但我怀疑您的脚本有可能无法以这种方式工作,具体取决于您的编写方式。

关于jquery - 部分 View 刷新后js文件未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450795/

相关文章:

jquery - 从字段集中获取选定的选项

jquery - .live() 可以用于 ajaxStart 和 ajaxComplete 吗?

javascript - 固定 fancybox 在屏幕上的位置?滚动真实?

javascript - Hub 方法在 hub 类外部不起作用

c# - 如何读取owin中间件中的自定义 header ?

javascript - 选项卡内容覆盖选项卡

php - 在我的网站中创建一个图片库,其中有包含许多图片的相册

asp.net-mvc - 无法在 asp.net mvc spark 文件中使用 Html.ActionLink

asp.net-mvc - 将集合传递给 EditorFor() 时,它会为输入元素生成无效名称

c# - 将 MVC 项目从本地迁移到 Azure - SQL Server 问题