Создание управляющего события, которое будет обрабатываться совершенно отдельной частью веб-приложения .Net - PullRequest
0 голосов
/ 26 сентября 2011

Люди,

У меня такое ощущение, что есть классическая модель дизайна, которая покрывает этот случай, но у меня нет справки.

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

Я не смог придумать элегантного способа, чтобы один мог вызвать другого. Я не хочу поднимать серию событий до вершины иерархии элементов управления, а затем вызывать серию вложенных методов, чтобы добиться желаемого эффекта. («эффект»! = визуальный эффект; я не могу решить это с помощью jQuery). Я хочу, чтобы событие и респондент оставались в неведении друг о друге: я не буду нарушать разделение проблем, поскольку последние знают о них и напрямую подписываются на них. событие, созданное бывшим. Я рассмотрел ряд других не элегантных решений, но я не буду утомлять вас, перечисляя их.

В принципе, я думаю, мне нужен способ реализовать модель издатель-подписчик для событий, в которых все может подписаться на что угодно.

Я использую .Net 4.0. Любые хорошие рамки, которые делают это? Есть ли простые способы реализовать это?

Большое спасибо,

Энн Л.

Ответы [ 3 ]

1 голос
/ 26 сентября 2011

Для событий на стороне сервера вы можете использовать:
Реактивные расширения (Rx) ...
http://msdn.microsoft.com/en-us/data/gg577609

Для событий на стороне клиента вы можете использовать:
Магистраль JS
http://documentcloud.github.com/backbone/
Нокаут JS
http://knockoutjs.com/

Вы упомянули, что не можете использовать jQuery, могу я спросить, почему?

1 голос
/ 26 сентября 2011

Похоже, вам нужен EventAggregator.Вы должны найти реализацию в библиотеке составных приложений.

EventAggregator позволяет вам регистрироваться в уведомлениях и извлекать их из полностью разделенных частей приложения.

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

Я не уверен, правильно ли я вас понимаю, но звучит так, будто вы хотите назначить несколько кнопок одному и тому же обработчику событий, что вы можете сделать так:

<asp:Button ID="Button1" runat="server" Text="Button 1" OnClick="Button_Click" ... />
<asp:Button ID="Button2" runat="server" Text="Button 2" OnClick="Button_Click" ... />

В коде -позади:

protected void Button_Click(object sender, EventArgs e)
{
    if (sender.Equals(Button1))
    {
        //Button1 logic
    }
    else if (sender.Equals(Button2))
    {
        //Button2 logic
    }
}

РЕДАКТИРОВАТЬ

Исходя из вашего комментария, может показаться, что вам может понадобиться обработчик событий.Если это так, попробуйте что-то вроде этого:

public event EventHandler ButtonClick;

protected void Button_Click(object sender, EventArgs e)
{
    if (this.ButtonClick != null)
        this.ButtonClick(sender, e);
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...