我有简单的局部视图:
<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的局部视图。
我该怎么做才能解决这个问题?
感谢。
答案 0 :(得分:4)
您不应在部分视图中使用@section scripts
。
如果你在主视图中渲染它,一切正常,因为Razor知道你的脚本放在_Layout
的哪个位置,但当你刷新时如果你基本上调用ajax并且你得到了行html。
由于您只获得了没有_Layout
Razor的部分页面,因此只需剪切此行,以便您的脚本链接甚至无法访问客户端。
您有两个选择:
@section scripts
并在没有它的情况下放置脚本链接。我不确定,但我怀疑当你的剧本以这种方式工作时,有一些可能性取决于你的编写方式。