2016-01-20 3 views
0

У моих изображений есть хиты int, которые предназначены для подсчета количества времени, которое кто-то нажал на изображение. При щелчке по нему изображение переходит в/Details/[Image ID]. Мои данные Контроллер имеет следующий код:Изменение значения объекта через контроллер

public ActionResult Details(int? id) 
{ 
    if (id == null) 
    { 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
    CustomButton customButton = db.CustomButtons.Find(id); 
    if (customButton == null) 
    { 
     return HttpNotFound(); 
    } 
    db.CustomButtons.Find(id).Hits += 1; 
    return View(customButton); 
} 

хитами изображение не остаются на 1 или 2, хотя независимо от того, сколько раз они щелкнули.

ответ

0

Это потому, что вы не храните счетчик посещений в любом месте. Каждый раз, когда страница возвращается к контроллеру .Hits - это 0, потому что каждый раз, когда страница перезагружается, она повторно инициализирует пользовательские кнопки, а .Hits возвращается в 0.

Вы должны сохранить текущее количество хитов в Модели и отправить Модель назад с представлением. В представлении вы можете взять текущее количество хитов из модели и сохранить их обратно в .Hits. Затем, когда отправляется контроллеру, увеличивается. Удерживает и сохраняет его обратно в Модели и возвращает новую модель с представлением.

0

Я понял, мне пришлось добавить db.SaveChanges(); на следующую строку после увеличения количества просмотров.

+0

Точно. 'db.CustomButtons.Find (id) .Hits + = 1;' ничего не делает сам по себе, кроме указания на то, что значение 'Hits' вашего объекта CustomButton с id' id' будет увеличено на единицу. Это значение фактически не преобразуется и не сохраняется в вашей базе данных до тех пор, пока вы не вызовете 'db.SaveChanges();'. – Chase