2010-06-20 63 views
2

我玩弄使用ASP.NET MVC AJAX功能後。我創建了一個頁面,其中包含一個從數據庫中生成的類別菜單,點擊時會向Controller發出AJAX請求,然後控制器返回PartialView。重新綁定JQuery的事件處理程序MicrosoftAjax返回PartialView

<% foreach (var item in Model.Categories) 
{ %> 
    <li> 
     <%= Ajax.ActionLink(item.CategoryName, 
           "Index", "Home", 
           new { id = item.CategoryID }, 
           new AjaxOptions { UpdateTargetId = "gallery" })%> 
    </li> 
<% } %> 


[HttpPost] 
    public ActionResult Index(int id) 
    { 

     List<Image> images = imageRepository.getCategoryImages(id).ToList(); 

     return PartialView("gallery", images); 
    } 

該圖庫div包含一些圖像,在第一次加載它有每個圖像存儲在數據庫中。我已經使用了一個JQuery插件,所以當縮略圖點擊放大時,用戶可以點擊圖片。當返回部分視圖時,不再綁定lightbox事件處理程序。

$(function() { 
     $('#gallery a').lightBox(); 
    }); 

是否有可能以某種方式觸發一個Javascript函數重新綁定M $ AJAX請求完成後的處理程序?

這是一個系列的,我打算採取自學如何做一些很酷的事情與AJAX在ASP.NET MVC項目的一部分。我打算一旦完成後在我的網站上發佈代碼,以便其他人可以像我一樣學習。我傾向於發現JQuery有很多例子 - > PHP - > MySQL是開源的堆棧。但是對於ASP.NET MVC來說很少。

感謝,

喬恩

回答

1

其中AjaxOptions性質是財產的onSuccess將調用一個成功的AJAX請求後,一些JavaScript代碼。將其值設置爲JavaScript函數的名稱,然後使用jQuery來激活LightBox腳本。

new AjaxOptions { UpdateTargetId = "gallery", OnSuccess="ActivateLightBox" }) 

和一些腳本:

<script ...> 
    function ActivateLightBox() { 
     $(function() { 
      $('#gallery a').lightBox(); 
     }); 
    } 
</script> 
+0

你的知識Eilon的泉源!再次感謝您的幫助! – 2010-06-20 19:29:35

0

你有兩個選擇。將該javascript添加到圖庫視圖中,以便在部分視圖加載時運行,或者更好的解決方案是@Eilon剛剛在那裏獲得的解決方案。

+0

我試過在部分視圖中包含腳本,但在加載時不執行。我讀過Phil Haack寫的一篇文章,他說當一個部分傳回AJAX請求時,Framework不會執行腳本。他的文章說使用JQuery .live(),但我無法使它工作。 Eilon的解決方案的工作原理非常簡單。 謝謝, 喬恩 – 2010-06-20 19:24:32