2010-06-30 123 views
0

我在Index.aspx的使用:ASP.NET MVC 2彈出對話框 - 性能和奇怪的行爲

<%= Html.StandardOverlayCreateButton() %> 
<div class="apple_overlay" id="overlay"> 
    <div class="contentWrap"> 
    </div> 
</div> 

這是翻譯成這樣:

<a href="Employee/Create" rel="#overlay"><button type="button">Create</button></a> 
<div class="apple_overlay" id="overlay"> 
    <div class="contentWrap"> 
    </div> 
</div> 

當按下按鈕彈出與Create.aspx發生。看看這個 - >Loading external pages into overlay

對我來說,看起來疊加性能很慢。

還有一些奇怪的行爲,因爲我幾乎每次都可以看到彈出窗口中的舊值。如果我點擊編輯按鈕,然後關閉彈出窗口並點擊另一個編輯按鈕,我可以在短時間內看到舊值。

使用ASP.NET MVC和jQuery做彈出窗口有更好的方法嗎?

是否有教程?

回答

1

一切正在做客戶端這樣的表現純粹是下降到JavaScript和jQuery代碼和無關的任何服務器端代碼,如ASP.NET MVC。

您在彈出窗口中使用了不少複雜的效果,我看到<div />調整了動畫,透明度,陰影和作品的大小。近期瀏覽器的JavaScript性能出現了突飛猛進的發展,但性能卻很高,但對於非常奢侈的視覺效果來說仍然很慢。您是否嘗試過使用您正在使用的任何模式彈出式JavaScript庫來調整視覺效果。

「而且有一些奇怪的行爲, 因爲我幾乎每次看到,在彈出的 舊值。如果我點擊 編輯按鈕,然後關閉 彈出窗口並單擊另一個編輯按鈕,我 可以看到短暫的 時間的舊值。「

我假設彈出窗口實際上是加載一個指向'Employee/Create'頁面的iframe。我的猜測是,當彈出窗口關閉,然後再次用另一個頁面重新打開時,上一頁仍然位於彈出窗口的iframe中,並且「load-new-page/url」事件不是「直到彈出窗口重新出現爲止,因此爲什麼你會很短暫地看到舊頁面。

我有類似的問題,你需要略微調整模態彈出行爲,以便它首先加載新的頁面,然後打開彈出窗口,而不是其他方式,這是目前正在做的。我的這個解決方案有點不好意思,因爲iframe中的頁面有一個$(document).ready({});調用一些JavaScript的事件函數是iframe的父級來加載彈出窗口。例如。把這個在你的頁面的iframe裏面坐:

<script type="text/javascript"> 

    $(document).ready(function() 
    { 
     window.parent.openPopup(); 
    }); 

</script> 

然後,你需要定義「openPopup()」 JavaScript方法在iframe的父(即主網頁列表記錄。)。

+0

沒有IFrame。一切都是通過Ajax。 – Rookian 2010-07-16 20:45:57

0

here - 不同的帖子,但答案是有關你的問題關於MVC & jQuery。