2015-12-24 59 views
2

我有簡單的局部視圖:JS文件被刷新

<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的局部視圖。 我該怎麼辦才能解決這個問題? 謝謝。

+3

你有沒有嘗試把腳本放在你的主視圖中而不是局部視圖中? –

+0

@Alorika是的。可以肯定的是,這不是因爲這個,我將它包含在兩個視圖中。 – user3818229

+1

你可以發佈你的代碼從reaload.alerts.js和_Alert局部視圖。也許你在局部視圖中遇到動態綁定的問題。 – freshbm

回答

4

您不應在部分視圖中使用@section scripts

一切正常,如果你在主視圖中呈現becouse Razor知道在哪裏把你的腳本放在_Layout上,但是如果你基本上做了ajax調用並且你得到了行html,

既然你只得到部分頁面沒有_Layout剃刀只是切斷這條線,所以你的腳本鏈接甚至不會到客戶端。

你有2種選擇:

  1. 像@Alorika說你應該把你的腳本在主視圖。但是可能會有問題,這取決於你的腳本做了什麼以及它是如何做的。這是很好的做法,我推薦使用它。如果腳本不起作用,你應該看它落在哪裏。
  2. 刪除@section scripts並把你的腳本鏈接沒有它。我不確定,但我懷疑當你的腳本不能以這種方式工作時,有一些可能性,要麼取決於你如何編寫它。
+0

謝謝!它適用於我刪除該部分。正如你所說這是不好的做法。那麼,如何更新js文件使其能夠在主視圖中工作? – user3818229

+0

@ user3818229我認爲最好在你放置腳本和所有細節的地方再問一個問題。 –

+0

是的,當然! http://stackoverflow.com/questions/34451210/the-js-file-doesnt-work-in-partial-view-after-it-refreshed – user3818229