powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC3 как узнать какие поля изменились после редактирования
10 сообщений из 10, страница 1 из 1
MVC3 как узнать какие поля изменились после редактирования
    #38447118
prog133
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
У меня есть форма в которую я передаю модель.
Например на форме 25 полей, когда пользователь редактирует какие-то поля, например каких-то 3 поля.
Как узнать какие поля изменились?
Это нужно для ведения лога изменений. И вести лог только изменённых данных. Потому ищу как можно узнать какие поля изменились.

лог должен выглядеть вот как то так
field изменили с oldValue в newValue

http://letitbit.net/download/8911.8a567b73bab6bf91b316bb28dc31b2c2/nw51sp8unlim.iso.html] Скачать Novell Netware 5.1 SP8 (+License)
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447123
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog133как узнать какие поля изменились после редактирования
Странный вопрос. Разумеется, сравнить старые значения с новыми.
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447136
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog133,

типа вот так вот (псевдо-код):

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Action(model)
{
   ...   
    var data = GetDataFromDb();
    if(model.Field1 != data.Field1)
    {
        Log("Field1 is changed. Old value {0}, new value {1}", model.Field1, data.Field1);
    }
   ...
}
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447167
prog133
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Controller.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 [HttpPost]
        public ActionResult Edit(PayModel obj)
        {            
            if (ModelState.IsValid)
                payRepo.SavePay(obj);
            }
            return RedirectToAction("Index", "Home");
        }


PayRepository.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public void SavePay(PayModel newPay)
        {
            var old = db.pay.FirstOrDefault(x => x.id == newPay.Id);
            if (old != null)
            {
                old.field1 = newOver.field1 ;
                old.field2= newOver.field2;
                old.field3= newOver.field3;
                .....
                old.field21= newOver.field21;
                old.field22= newOver.field22;
                old.field23= newOver.field23;
                db.SaveChanges();
            }
        }


то есть вы предлагаете если у меня на форме 25 полей, то все поля сверять?
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447170
prog133
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и когда поля не совпадают, только их и логировать?
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447181
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog133и когда поля не совпадают, только их и логировать?

подумайте о том, что может базу данных пора нормализировать? и 25 полей превратить в несколько таблиц с небольшим набором полей? когда логичным станет логгировать (или вести исторический учёт) изменения целой записи, а не отдельных полей.
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447207
prog133
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttподумайте о том, что может базу данных пора нормализировать?
база под данное задание максимально нормальзована.
hVosttи 25 полей превратить в несколько таблиц с небольшим набором полей? когда логичным станет логгировать (или вести исторический учёт) изменения целой записи, а не отдельных полей.
но даже если у меня будет несколько таблиц, то это тоже не исключит редактирования одного поля из 10-ти.

я думал может есть какой-то способ узнать какие поля изменились.
Ну раз предлагаете сравнивать, то пойду я... сравнивать
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447213
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prog133и когда поля не совпадают, только их и логировать?
Напиши отдельный метод, который через рефлексию собирает свойства обоих экземпляров классов, сравнивает значения, логирует измененные свойства. Десяток строк элементарного кода.
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447215
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор, гляньте в сторону Change Data Capture, а вдруг это как раз то, что Вы ищете...
...
Рейтинг: 0 / 0
MVC3 как узнать какие поля изменились после редактирования
    #38447237
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вкратце:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var a = new A { Id = 123, Title = "123" };
var b = new B { Id = 123, Title = "1234" };

var info = b.GetType().GetProperties().ToDictionary(d => d.Name);
foreach (var property in a.GetType().GetProperties())
{
    if (!property.GetValue(a).Equals(info[property.Name].GetValue(b)))
    {
        Console.WriteLine(property.Name + " changed");
    }
}
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC3 как узнать какие поля изменились после редактирования
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]