0

我正在玩 EXT.net (ASP.NET),我有以下情况:

ParentPage.aspx - 包含一个打开Ext.net “窗口”的按钮;使用 Javascript 完成的弹出窗口。在那个窗口中,我放置了一个 UserControl (Customer.ascx)。该 UserControl 可以创建客户,并且它使用 Ext.NET DirectMethod 在代码隐藏 Customer.ascx.cs 中创建客户

Customer.ascx - 包含一些 Ext.net 控件和创建 Customer 对象的代码的 UserControl。

现在,当我调用DirectMetod CreateNewCustomer 时,将按预期创建客户,但现在我希望 ParentPage 知道此成功(或失败)操作并采取相应措施。

因此,如果操作失败 - 由于某种原因无法创建客户 - 窗口(弹出窗口)应保持原位并应显示错误。但如果操作成功,则应关闭窗口并更新/刷新列表。

我不能/应该在 UserControl 中放置任何“OnSuccess”代码,因为 UserControl 并不真正知道它是放置在窗口中还是其他地方,并且它不应该由 UserControl 来决定是否应该是显示与否。

所以我需要通知 ParentPage 发生了什么。我的脊椎反应是在 UserControl 中有一个事件,但这当然不起作用,因为它是一个异步操作,我无法将消息推送到 Web 浏览器。

也许可以在 UserControl 调用的 ParentPage 中放置一个 JavaScript 方法,但这有点难看。UserControl 应该能够以“安全方式”通知父页面。它真的不知道 Javascript 方法是否存在,所以它可能正在调用一个不存在的方法?

我可以尝试哪些方法?

4

1 回答 1

0

现在,当我调用 DirectMetod CreateNewCustomer 时,将按预期创建客户,但现在我希望 ParentPage 知道此成功(或失败)操作并采取相应措施。

因此,如果操作失败 - 由于某种原因无法创建客户 - 窗口(弹出窗口)应保持原位并应显示错误。

我将如何做到这一点,是将以下属性应用于我的 DirectMethod:

[DirectMethod(ShowMask = true, SuccessFn = "showSuccessMessage", FailureFn = "showFailureMessage", Msg = "Creating Customer...", RethrowException = true)]

然后为 DirectMethod 的成功/失败编写客户端 JS 函数,正如你所说的那样,关闭窗口,你可以这样做,这样如果窗口不存在,它不会做任何事情来避免任何奇怪的时候你把UC放在别处。

不幸的是,这确实迫使 UC 自行关闭,也许这并不理想,但它可能会解决问题。

于 2011-09-15T09:23:15.563 回答