我正在创建一个Web应用程序!
我有一个具有属性的类:
public class DependencyHelper: INotifyPropertyChanged
{
private string _myString;
public virtual string MyString
{
get { return _myString; }
set
{
_myString = value;
OnPropertyChanged("MyString");
}
}
我希望在我的主页homepage.aspx.cs上有一个类似事件的东西,一旦该类的属性发生变化,它就会做一些事情。即将获取MyString的值并将其显示在警报中。
有人可以帮忙解决这个问题,因为我无法想到如何做到这一点。
谢谢
答案 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。我建议您使用ObservableCollection
或AsyncBindingList
。