2014-01-30 2 views
0

Моя форма Родитель имеет следующую ссылку:MVC OnSuccess Script ошибка

@Ajax.ActionLink("Delete", "ControllerAction", new { id=Model.Id }, new AjaxOptions 
         { 
          HttpMethod = "GET", 
          UpdateTargetId = "targetDiv", 
          InsertionMode = InsertionMode.Replace,       
          OnSuccess = "openPopup()" 
         }) 

OpenPopup функции сценария:

function openPopup() { 
     $('#test').dialog({ 
      autoOpen: true, 
      width: 800, 
      resizable: false,    
      modal: true, 
      open: function (event, ui) { 
      } 
     }); 
    } 

На мой частичный вид у меня есть Ajax.BeginForm

@using (Ajax.BeginForm("ActionGoesHere", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "selectedview", LoadingElementId = "spinner", InsertionMode = InsertionMode.Replace, OnSuccess = "CloseWindow" })) {.... 

}

<script type="text/javascript">  

    function CloseWindow() { 
     $('#test').dialog("close"); 
    } 



</script> 

После успешной операции предполагается закрыть диалоговое окно. Но я получаю следующую ошибку сценария.

Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'close' 

Любые подсказки?

+0

попробуйте вызвать 'openPopup()' в двух представлениях i.e; Родительский просмотр и частичный просмотр – dhana

ответ

0

Вы должны сначала инициализировать диалоговое средство открыть диалоговое окно, а затем вызвать закрытие .Вы должны вызвать только эту последовательность,

openPopup() ---> CloseWindow() 

Вот код

$(function() { 
    function openPopup() { 
     $('#dialog').dialog({ 
      autoOpen: true, 
      resizable: false,    
      modal: true, 
      open: function (event, ui) { 
      } 
     }); 
    } 
    function CloseWindow() { 
     $('#dialog').dialog("close"); 
    } 


    openPopup() 
    CloseWindow() //first run comment it and second run remove comment 

    }); 

HTML:

<div id="dialog" title="Basic dialog"> 
    <p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p> 
</div> 

Демо-ссылка http://jsfiddle.net/dhana36/6TssK/1/

+0

Благодарим за отзыв. Если вы посмотрите на мой код, я вызову метод closewindow после открытия диалога. Поэтому я думаю, что нет проблемы с последовательностью. С его частичным представлением MVC, как-то диалог не инициализируется, когда я вызываю метод CloseWindow. Я попытался назначить имя класса в диалоговое окно, но это не сработало. – Yass

+0

@Yass сначала напишите свой код внутри '$ (function() {})'. Я думаю, что это проблема DOM. – dhana

+0

@Yass Я заметил, что ваш код сначала вызывает 'openPopup()' в вашем коде, вы не вызывали функцию ajax begin, после успешного запуска Ajax 'CloseWindow()' – dhana

Смежные вопросы