【问题标题】:responding to the model's property changes in asp.net mvc2响应 asp.net mvc 2 中的模型属性更改
【发布时间】:2011-05-11 10:14:33
【问题描述】:

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

有没有办法做到这一点。

【问题讨论】:

    标签: asp.net-mvc-2


    【解决方案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));
        }
    }
    

    【讨论】:

    • 这是否也可以与 ASP.NET MVC 2 一起使用。我没有使用实体框架。
    • 是的,您可以随意使用。您所做的只是订阅一个事件,当属性更新时您的模型会触发该事件。我在上面添加了一个简单的例子。
    • 非常感谢您的示例。这真的很有用。我正计划实现这种功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多