Смотреть, когда свойство меняется - PullRequest
0 голосов
/ 27 января 2011

Я создаю веб-приложение!

У меня есть класс, у которого есть свойство:

public class DependencyHelper: INotifyPropertyChanged
{

    private string _myString;
    public virtual string MyString
    {
        get { return _myString; }
        set 
        {
            _myString = value;
            OnPropertyChanged("MyString");
        }
    }

Я хочу, чтобы на моей домашней странице homepage.aspx.cs было что-то наподобие события, которое будет делать что-то после изменения свойства класса. Т.е. получит значение MyString и отобразит его в предупреждении.

Может кто-нибудь помочь с этим, так как я не могу придумать, как это сделать.

Спасибо

Ответы [ 3 ]

0 голосов
/ 27 января 2011

Я не знаю, хотите ли вы двустороннего связывания в веб-решении, что абсолютно невозможно или возможно при использовании кометного подхода (http://en.wikipedia.org/wiki/Comet_(programming)).

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

Проверьте, как создать ScriptControl http://byatool.com/ui/creating-script-controls-and-love/

и API обратного вызова ASP.NET: http://msdn.microsoft.com/en-us/library/ms178208.aspx

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

0 голосов
/ 17 марта 2011

Это похоже на вопрос 5216766 .Я предлагаю вам использовать ObservableCollection или AsyncBindingList.

0 голосов
/ 27 января 2011

Поскольку это веб-страница, вы должны отправить JS клиенту для отображения окна сообщения. Я бы сделал что-то вроде этого:

private void OnPropertyChanged(string propertyName)
{
    ScriptManager.RegisterClientScript(typeof(Page), "AlertScript" + System.Guid.NewGuid().ToString(), string.Format("alert('Property {0} has changed');"));
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...