MicrosoftAjax返回PartialView后重新绑定JQuery事件处理程序

时间:2010-06-20 19:12:45

标签: asp.net-mvc

我正在使用ASP.NET MVC来玩AJAX功能。我创建了一个页面,其中包含从数据库生成的类别菜单,单击该数据库时会向Controller发出AJAX请求,然后Controller返回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包含许多图像,在第一次加载时,它包含存储在数据库中的每个图像。我使用了lightbox一个JQuery插件,所以当点击它时,它会放大,用户可以点击图像。返回部分视图时,不再绑定灯箱事件处理程序。

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

在M $ AJAX请求完成后,是否有可能以某种方式触发Javascript函数重新绑定处理程序?

这是我打算教授自己如何使用ASP.NET MVC中的AJAX做一些很酷的事情的一系列项目的一部分。我打算在完成后在我的网站上发布代码,以便其他人可以像我一样学习。我倾向于发现JQuery有很多例子 - &gt; PHP - &gt; MySQL是开源堆栈。但是ASP.NET MVC却很少。

谢谢,

乔恩

2 个答案:

答案 0 :(得分:2)

AjaxOptions属性之一是OnSuccess属性,它将在成功的AJAX请求之后调用一些JavaScript代码。将其值设置为JavaScript函数的名称,然后使用jQuery激活LightBox脚本。

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

还有一些剧本:

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

答案 1 :(得分:0)

您有两种选择。将javascript添加到库视图中,以便在加载局部视图时运行,或者更好的解决方案是@Eilon首先使用的那个。