【问题标题】:asp.net / ext.net : UserControl informing parent of successful or failed operation?asp.net / ext.net:UserControl 通知父操作成功或失败?
【发布时间】:2011-03-29 13:03:28
【问题描述】:

我正在玩 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 中有一个事件,但这当然不起作用,因为它是一个异步操作并且我无法将消息推送到网络浏览器。

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

我可以尝试哪些方法?

【问题讨论】:

  • 我查看了 ScriptManager 并希望在 UserControl 的 DirectMethod 中使用“RegisterStartupScript”。该脚本应检查另一个名为“CustomerReportCallback”的 Javascript 方法,如果存在,则调用该方法。这样我就可以检查父级是否有一个 Javascript 方法,可以在操作成功后用于“回调”。但没有成功 - 似乎“RegisterStartupScript”只能在 Page_Load 中?

标签: javascript asp.net user-controls ext.net


【解决方案1】:

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

因此,如果操作失败 - 无法为某些人创建客户 原因 - 窗口(弹出窗口)应该留在原地并且错误应该 显示出来。

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

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

然后为 DirectMethod 的成功/失败编写客户端 JS 函数,如您所说,关闭窗口,您可以这样做,以便如果窗口不存在,它不会做任何事情来避免将 UC 放在其他地方时有什么奇怪的地方。

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

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    相关资源
    最近更新 更多