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

, поэтому я играю с 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 Ответ

0 голосов
/ 15 сентября 2011

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

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

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

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

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

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

...