我有简单的局部 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 个选择:
- 就像 @Alorika 所说,你应该将脚本放在主视图中。但可能会出现问题,这取决于您的脚本的作用以及它是如何做的。这是很好的做法,我建议使用它。如果脚本不起作用,您应该查看它失败的地方。
- 删除
@section script
并将脚本链接去掉。我不确定,但我怀疑您的脚本有可能无法以这种方式工作,具体取决于您的编写方式。
关于jquery - 部分 View 刷新后js文件未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450795/