2010-07-05 108 views
0

我試圖通過功能連接到一個ajax.beginform的ajaxoptions的財產的onSuccess調用jQuery用戶界面對話框..ajax.beginform onsucess updatetargetid隱藏輸入

<script type="text/javascript"> 
    // Dialog 
    $(document).ready(function() { 
     $('#dialog').dialog({ 
      autoOpen: false, 
      width: 600, 
      modal: true, 
      buttons: { 
       "Ok": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 
</script> 

在一個單獨的腳本文件我有這個..

function EmailResult() { 
    $('#dialog').dialog('open'); 
} 

然後我有一個聯繫表格,實際上並沒有連接起來,控制器只是響應兩個字符串響應之一。

<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "ContactResult", OnSuccess="EmailResult" })) 
{ %> 

如果我拿出從Ajax.BeginForm的OnSuccess="EmailResult"或者乾脆刪除$('#dialog').dialog('open');從我EmailResult功能錯誤消失所以obvisouly這是個用的onSuccess屬性和jQuery UI的對話框的問題。

我的第一個問題是我做錯了什麼導致此不工作和/或若不會工作,那麼有沒有一種更好的解決方案。

我試圖創建上來,並說該消息是否已發送的對話框。我不想使用警報對話框。

我猜的錯誤會有所幫助,在IE 8調試它在MicrosoftAjax.js庫未定義的錯誤出現

的最後這段代碼塊造成問題的原因,並在IE當地人選項卡下8它說b是不確定的。

this._onReadyStateChange = function() { 
    if (a._xmlHttpRequest.readyState === 4) { 
     try { 
      if (typeof a._xmlHttpRequest.status === "undefined") return 
     } catch (b) { 
      return 
     } 
     a._clearTimer(); 
     a._responseAvailable = true; 
     try { 
      a._webRequest.completed(Sys.EventArgs.Empty) 
     } finally { 
      if (a._xmlHttpRequest != null) { 
       a._xmlHttpRequest.onreadystatechange = Function.emptyMethod; 
       a._xmlHttpRequest = null 
      } 
     } 
    } 
}; 

這是什麼更新是

<%= Html.Hidden("ContactResult") %> 

這原來是問題的全部,我改變了隱藏的輸入到一個div和它完美的作品。不知道爲什麼,但......如果別人跑進這個你去那裏...

+0

此外,模式對話框在連接到鏈接時完美工作,但在上面的示例中不起作用。實際上,如果你將它連接到OnComplete而不是OnSucces,模態對話框會出現,但你仍然會得到相同的錯誤。 – Casey 2010-07-05 18:42:56

回答

0

所以,我想這是我想通了。我開始了一個新的MVC項目有兩個輸入,並開始只使用一個警告框事實證明它與jquery.ui對話框插件沒有關係。當它使用ajax.beginform運行後,它會在警告框出現時正常工作。

所以長話短說。你不能使用隱藏的輸入在Ajax.BeginForm的UpdateTargetID?我想這是一個問題和答案,但將UpdateTargetID更改爲「div」的ID修復它,它適當地工作。你甚至可以將Div可見度設置爲隱藏,並且可以工作。