2010-07-05 70 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可见度设置为隐藏,并且可以工作。