响应asp.net mvc2中模型的属性更改

时间:2011-05-11 10:14:34

标签: asp.net-mvc-2

我的模型不是EF,而是纯文本。我必须为每个模型的属性处理更新的事件,以便我可以记录他们的更改。

有没有办法实现这一目标。

1 个答案:

答案 0 :(得分:1)

实施INotifyPropertyChanged界面。

一个简单的例子:

using System.ComponentModel;

public class MyModel : INotifyPropertyChanged
{
    string _myProperty;

    public event PropertyChangedEventHandler PropertyChanged;

    public string MyProperty
    {
        get { return _myProperty; }
        set 
        { 
            _myProperty = value;
            NotifyPropertyChanged("MyProperty");
        }
    }

    public void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
        {
             PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }
}

你可以像......一样使用它。

public class Test
{
    public static void Main()
    {
        var model = new MyModel();
        model.PropertyChanged += new PropertyChangedEventHandler(LogChange);

        model.MyProperty="apples";
        model.MyProperty="oranges";
        model.MyProperty="pears";
    }

    public static void LogChange(object sender, PropertyChangedEventArgs args)
    {
        Console.WriteLine(args.PropertyName + " has changed!");
        Console.WriteLine("New value: " 
                   + sender.GetType().GetProperty(args.PropertyName)
                     .GetValue(sender, null));
    }
}