Я думаю, что самый простой способ сделать это - использовать переменную сеанса. Вы можете добавить строку в ваши контроллеры (либо в методе действия, либо в конструкторе, либо даже, возможно, с фильтром действия), который хранит текущую дату / время в сеансе. Затем вы можете использовать ajax-вызов для обновления значения на экране через определенный интервал. Возможно, вы захотите сделать интервал в минутах, а не в секундах, иначе вы бы отобразили счетчик (то есть «1 секунда», «2 секунды» и т. Д.).
Некоторые быстрые примеры кода:
// Somewhere in controller
Session["LastSeen"] = DateTime.Now;
// Now, an action that would return the amount of time since the user was last seen
public ViewResult GetLastSeenTime()
{
return Json(new { TimeAway = Date.Time.Now.Subtract((DateTime)Session["LastSeen"]).TotalMinutes});
}
// Then on your page, something like this
$.post("/Controller/GetLastSeenTime",null,function(result) {
if(result.LastSeen < 5)
$("#Status").Text("Online");
else if (result.LastSeen % 10 == 0)
$("#Status").Text(result.LastSeen + " minutes");
},"json");
Полностью не проверено, но должно быть близко.