Jquery Modal Dialog отображает частичное представление MVC3 - работает только в первый клик - PullRequest
4 голосов
/ 09 июня 2011
 public ActionResult MeanQ(int id)
{            
    Access access= db.Access.Find(id);
    return PartialView("_MeanQPartial", access);
}

Частичное представление, отображаемое в приведенном выше коде, отображается в диалоговом окне (Jquery) ... Ссылка (onclick), которая отображает частичное представление в диалоговом окне Jquery, хорошо работает для первого щелчка. Когда я закрываю это диалоговое окно и снова нажимаю на ссылку, частичное представление не открывается должным образом во всплывающей форме. Он открывается как новая страница в браузере. Как сделать так, чтобы всплывающая модальная диалоговая ссылка каждый раз работала одинаково?

Код Javascript ниже (модальное диалоговое окно Jquery):

<script type="text/javascript">
$(document).ready(function () {
    //initialize the dialog
    $("#result").dialog({ width: 400, resizable: true, position: 'center', title: 'Access info', autoOpen: false,
        buttons: { "Ok": function () { $(this).dialog("close"); } }
    });
});

$(function () {
    $('#modal').click(function () {
        //load the content from this.href, then turn it into a dialog.

        $('#result').load(this.href).dialog('open');
        return false;
    });
});

HTML-ссылка, которая запускает модальное диалоговое окно:

@Html.ActionLink("PopUp", "MeanQ", new { id = item.AccID }, new { id = "modal" })

Ответы [ 3 ]

4 голосов
/ 12 сентября 2011

Недавно я также столкнулся с более тонкой проблемой, когда хотел использовать как частичное, так и полное отображение бритвы. Я следовал следующей статье, чтобы реализовать мой модальный диалог. И все работало нормально.

http://www.matthidinger.com/archive/2011/02/22/Progressive-enhancement-tutorial-with-ASP-NET-MVC-3-and-jQuery.aspx

1 голос
/ 09 июня 2011

Не зная вашего JavaScript, я предполагаю, что вы каким-то образом заменяете элемент <a/> при загрузке PartialView, так как вы упоминаете, что <a/> выполняет действие по умолчанию после загрузки модального.

например

$("#someA").click(function(){
  //loads the modal and replaces #someA
});

Попробуйте использовать .live():

$("#someA").live("click", function(){
  //loads the modal and replaces #someA, but still works since you used live()
});

Еще лучше, если элемент имеет общего родителя, вы можете использовать .delegate()

$("#someParentOfA").delegate("#someA", "click", function(){

});
0 голосов
/ 10 июня 2011

Вы используете MVC3? Вместо возврата «ActionResult» может помочь, если вы вернете «PartialViewResult».

...