在财产变化时观察

时间:2011-01-27 16:02:00

标签: c# asp.net c#-4.0

我正在创建一个Web应用程序!

我有一个具有属性的类:

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 :(得分:0)

由于它是一个网页,您必须向客户端发出JS以显示消息框。我会做这样的事情:

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

整个NewGuid混乱使得脚本名称是唯一的,如果您更改多个属性,您将获得多个框。

答案 1 :(得分:0)

我不知道您是否希望在Web解决方案中进行双向绑定,这绝对是不可能的,或者可能使用彗星方法(http://en.wikipedia.org/wiki/Comet_(programming))。

也许你想在回发或回调之后做这样的事情,这可能只是从你的控件或页面向PropertyChanged事件添加一个事件hanlder,并添加一些脚本块或引用一个来显示警告改变了价值。

检查如何创建ScriptControl http://byatool.com/ui/creating-script-controls-and-love/

ASP.NET Callback API:http://msdn.microsoft.com/en-us/library/ms178208.aspx

你可以做一个接近或只是单向绑定的彗星,所以,在第二种情况下(建议和推荐的那个),在用户交互之后,使用回调服务器,检查是否有变化,然后返回在客户端,提醒此更改。

答案 2 :(得分:0)

这类似于question 5216766。我建议您使用ObservableCollectionAsyncBindingList