模态对话框有时不会在mvc中使用ajax调用

时间:2013-12-17 14:17:25

标签: jquery asp.net ajax asp.net-mvc asp.net-mvc-3

我正在使用ajax显示模式对话框,并使用分页。我发现当加载初始页面时会调用模态对话框,这是一个带有Ajax的局部视图,但如果我点击下一页并添加新的DOM元素,那么有时当我点击Action链接时,只有一个简单的局部视图是在没有AJAX的情况下加载,当我调试时它没有在模态对话框中加载,假设我要查看的记录的id是11然后通过ajax它是11?== 138445555但是当调用普通的局部视图时它是Simply ViewDetail?页面= 3。我使用以下jquery代码调用模态对话框。请指出问题在哪里。感谢....

$(function () {
    $.ajaxSetup({
        cache: false
    });
    $('.btnShowDialog').click(function () {
        $('.ShowModalDialog').load(this.href,function () {
            $('#ShowModal').modal({
                backdrop: 'static',
                Keyboard: true
            }, 'show');
        }),
        return false;
        e.preventDefault();
    }););

2 个答案:

答案 0 :(得分:0)

user2802591,

如果要更改某些DOM元素,可能会以某种方式更改按钮。我不确定,因为我没有看到所有的代码。

无论如何,如果这是真的,jQuery的click方法无法在动态DOM元素上执行。请改用此块:

$(document).on('click', '.btnShowDialog', function () {
     // code here
});

这将在动态DOM元素上执行该函数。当然,如果您要更新该按钮,或者在动态添加元素时以某种方式进行更改,这将是解决方案。

答案 1 :(得分:0)

  1. 你错过了一个“}”
  2. 防止默认应该在开始
  3. 使用新的DOM,您需要重置点击,或使用“on”(如果你有一个旧的JQ,请活动:http://api.jquery.com/on/
  4. $(function () {
        $.ajaxSetup({
            cache: false
        });
        $('.btnShowDialog').on('click',function (e) {
           e.preventDefault();
    
            $('.ShowModalDialog').load(this.href,function () {
                $('#ShowModal').modal({
                    backdrop: 'static',
                    Keyboard: true
                }, 'show');
            }),
            return false;
    
        });
    });