我用這個答案來延緩諧音/編輯腳本的渲染: https://stackoverflow.com/a/14127332/1612788如何延遲呈現部分視圖中的腳本,除非它是ajax?
這依賴於在
@using (Html.BeginScripts())
{
<script>
var foo = "Bar";
</script>
}
封閉所需的腳本,當部分與其他部分同步加載這個偉大的工程的頁面。但是,當從ajax請求調用partial時,它不會在響應中呈現腳本。
有沒有一種方法可以告訴它在Html.BeginScripts
是同步請求時使用Html.BeginScripts
,並且當它是異步請求時忽略Html.BeginScripts
?換句話說,我只是想在正常情況下通過ajax請求部分腳本。
我大概可以做這樣的事情:
@if (Request.IsAjaxRequest())
{
<script>
var copy = "Bar";
</script>
}
else
{
using (Html.BeginScripts())
{
<script>
var copy = "Bar";
</script>
}
}
但是,有沒有辦法這樣可以不必在源腳本的兩個副本做什麼?
我不是100%確定你的目標,但下面的例子適用於我認爲你的想法。讓我知道,如果它不適合你,因爲它可以調整:) –
其實它有點關閉。區別不在於是將部分渲染爲部分渲染還是將其作爲完整渲染而不是佈局渲染,而是我是否同步渲染局部渲染(同時充滿布局)或異步渲染(完整渲染之後視圖已經被渲染了,我只是通過ajax注入部分)。我*希望腳本部分與html一起輸出,以便通過Ajax請求它 – Tevis
我瞭解您的問題,並努力解決相同的問題。在引用
中的腳本而不是在主體結尾處是我到目前爲止唯一的解決方案。如果你找到了另一個解決方案,請分享。 –