asp.net / ext.net:UserControl通知父母成功或失败的操作?

时间:2011-03-29 13:03:29

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

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

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

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

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

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

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

所以我需要告知ParentPage最新情况。我的脊椎反应是在UserControl中有一个事件,但当然没有用,因为它是一个异步操作而且我不能将消息推送到Web浏览器。

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

任何想法,想法等都会受到赞赏=)

1 个答案:

答案 0 :(得分:0)

  

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

     

因此,如果操作失败,则无法为某些客户创建客户   原因 - 窗口(弹出窗口)应该保持原位并且应该出错   显示。

我将如何执行此操作,将以下属性应用于我的DirectMethod:

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

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

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