2016-05-17 49 views
0

我需要顯示通知給我的網站的用戶。當用戶點擊通知按鈕時,它應該隱藏計數器。而僅顯示通知的NotificationIsSeen是假在div點擊設置複選框爲true Ajax MVC 5

我的模型

//other fields 
    [Display(Name = "Viewed")] 
    public bool NotificationIsSeen { get; set; } 

我的控制器編輯

public ActionResult Index() 
    { 
     var notification = (from r in db.Notification 
          where r.NotificationIsSeen == false 
          select r); 
     ViewBag.NotificationIsSeen = false; 
     ViewBag.NotifyTotal = notification.Count(); 
     return View(); 
    } 

我的觀點編輯

      <!-- Menu toggle button --> 
          <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
           <i class="fa fa-envelope-o" id="notify_button"></i> 
           @if (ViewBag.NotifyTotal > 0) 
           { 
            <span class="label label-success" id="notify_counter">@ViewBag.NotifyTotal</span> 

           } 
           else 
           { 
            <span class="label label-success" id="notify_counter"></span> 

           } 

          </a> 

我的Ajax代碼:

<script> 
    $('#notify_button').click(function() { 
     $('#notify_counter').fadeOut('slow'); 
     $.ajax({ 
      url: "@(Url.Action("Index", "Home"))", 
      type: 'POST', 
      data: { 
       NotificationIsSeen: "True" //I am not sure if this is correct 

      } 
     }); 
    }); 

onclick notify_button它隱藏了notify_counter,但它在刷新頁面上再次出現。

有什麼想法? 謝謝

+0

貴'ajax'請求更新數據庫? –

+1

如果你只想顯示沒有被看到的通知,那麼你的查詢應該有一個'.Where(x =>!NotificationIsSeen)',你的ajax調用應該調用一個控制器方法來將該值設置爲'false' –

+0

不,它不更新數據庫。 – touinta

回答

0

我終於找到解決方案可能對某人有用。

我控制器

public ActionResult IsSeen() 

    { 
     var query = from r in db.Notification 
        where r.NotificationIsSeen == false 
        select r; 

     foreach (Notification r in query) 
     { 
      r.NotificationIsSeen = true; 


      } 

     db.SaveChanges(); 
     return View(); 

    } 

我的AJAX

<script> 
    $('#notify_button').click(function() { 
     $('#notify_counter').fadeOut('slow'); 

     $.ajax({ 
      url: "@(Url.Action("IsSeen", "Home"))", 


      }); 
    }); 
    </script> 
0

您必須更新DB中的「NotificationIsSeen」參數,然後您必須從控制器中的數據庫中獲取NotificationIsSeen的值。

+0

你能幫我一些代碼嗎?謝謝 – touinta

相關問題