asp.net / ext.net: UserControl информирует родителя об успешной или неудачной операции?

Поэтому я играю с EXT.net (ASP.NET), и у меня следующая ситуация:

ParentPage.aspx - содержит кнопку, которая открывает "окно" Ext.net; всплывающее окно сделано с Javascript. В этом окне я размещаю UserControl (Customer.ascx). Этот UserControl может создавать клиентов, и он делает это, используя Ext.NET DirectMethod в выделенном коде, Customer.ascx.cs

Customer.ascx - UserControl, который содержит некоторые элементы управления Ext.net и код для создания объекта Customer.

Теперь, когда я вызываю DirectMetod CreateNewCustomer, клиент создается, как и ожидалось, но теперь я хочу, чтобы ParentPage знал об этой успешной (или неудачной) операции и действовал соответствующим образом.

Таким образом, если операция не удалась - Клиент по какой-то причине не может быть создан - Окно (всплывающее окно) должно оставаться на месте, и должна отображаться ошибка. Но если операция прошла успешно, то окно должно быть закрыто и список должен быть обновлен / обновлен.

Я не могу / должен поместить любой "OnSuccess"-код в UserControl, так как UserControl действительно не знает, находится ли он в окне или где-то еще, и его не должно зависеть от UserControl, чтобы принимать решения, должен ли он отображаться или нет.

Поэтому мне нужно сообщить ParentPage о том, что происходит. Моя реакция на позвоночник состояла в том, чтобы в UserControl было событие, но это, конечно, не сработало, поскольку это асинхронная операция, и я не могу отправить сообщения в веб-браузер.

Может быть, вы могли бы поместить метод Javascript в ParentPage, который вызывает UserControl, но это уродливо. UserControl должен иметь возможность информировать родительскую страницу "безопасным образом". Он на самом деле не знает, существует ли метод Javascript, поэтому он может вызывать несуществующий метод?

Любые идеи, мысли и т. Д. Будут оценены =)

1 ответ

Теперь, когда я вызываю DirectMetod CreateNewCustomer, клиент создается, как и ожидалось, но теперь я хочу, чтобы ParentPage знал об этой успешной (или неудачной) операции и действовал соответствующим образом.

Таким образом, если операция не удалась - Клиент по какой-то причине не может быть создан - Окно (всплывающее окно) должно оставаться на месте, и должна отображаться ошибка.

Как бы я это сделал, применил бы следующие атрибуты к моему DirectMethod:

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

а затем написать JS-функции на стороне клиента для успеха / неудачи DirectMethod, один, как вы сказали, чтобы закрыть окно, вы можете сделать это так, чтобы, если окно не существовало, оно не делало ничего, чтобы избежать каких-либо странностей, когда Вы размещаете UC в другом месте.

К сожалению, это заставляет UC закрыться, и, возможно, это не идеально, но это может решить проблему.

Другие вопросы по тегам