2016-08-03 4 views
1

私はMVCアプリケーションのチャッターアプリケーションを作成しています。私はチャットでオンラインになっている人を見せたい。どのように私はそれを表示できますか?Chatter Application MVCを使用しているユーザーをオンラインにする方法を教えてください。

私はおしゃべりコントローラコードがあります。

public ActionResult ChatterList(int ProjectId) 
{ 
    ReadCookieValue cookie = new ReadCookieValue(); 
    clientId = cookie.readuserinfo().ClientId; 
    userId = cookie.readuserinfo().Id; 
    roleId = cookie.readuserinfo().RoleId; 
    ChatterViewModel model = new ChatterViewModel(); 
    model.chattersList = Task.Run(() => _project.GetChatterList(ProjectId)).Result; 
    foreach (var item in model.chattersList) 
    { 
     item.CurrentUserId = userId; 
    } 
    model.newChatter = new ChatterModel(); 
    model.newChatter.ProjectId = ProjectId; 
    model.newChatter.UserId = userId; 
    model.newChatter.UserName = cookie.readuserinfo().UserName; 
    return View("ProjectChatter", model); 
} 

public async Task<ActionResult> AddChatter(ChatterViewModel model) 
{ 
    if (model != null) 
    { 
     var obj = await _project.AddChatterList(model); 
     if (model.newChatter.ProjectId == 3) 
     { 
      return RedirectToAction("EbitDaReports"); 
     } 
    } 
    return RedirectToAction("Reports"); 
} 

を、私はプロジェクトIDビューのコードを使用しておしゃべりを作成したが

<div class="col-lg-6"> 
    <div class="ibox-content"> 
     <div class="chat-discussion"> 

      <div class="ibox float-e-margins"> 




       <div class="chat-element right"> 
        <div class="row m-t-lg"> 

         @if (Model.ProjectId > 0) 
         { 
          @Html.Action("ChatterList", "Projects", new { @ProjectId = Model.ProjectId }) 
         } 
        </div> 

       </div> 



      </div> 
     </div> 


    </div> 
</div> 

のように見える私が取得しています

<div class="row"> 
    @if (HttpRuntime.Cache["ProjectId"] != null) 
    { 
     var loggedOnUsers = HttpRuntime.Cache["ProjectId"] as Dictionary<string, DateTime>; 

     if (loggedOnUsers != null) 
     {<div class="ProjectId"> 
     } 
     <span> Online Users: </span> 
    </div> 
     } 
    } 
</div> 

を使用しようとしています何もない。私は新しいコントローラを作成する必要がありますか?それとも、私は既存のコントローラをオーバーライドできますか?

答えて

0

辞書項目をループして表示する必要があります。

<div class="row"> 
    @if (HttpRuntime.Cache["ProjectId"] != null) 
    { 
     var loggedOnUsers = HttpRuntime.Cache["ProjectId"] as Dictionary<string, DateTime>; 
     <span> Online Users: </span> 
     if (loggedOnUsers != null) 
     { 
      foreach (var userItem in loggedOnUsers.Keys) 
      { 
       <p>@userItem <span>@loggedOnUsers[userItem]</span></p> 
      } 
     } 
     else 
     { 
      <p>No users!</p> 
     } 

    } 
    else 
    { 
     <h2>Could not find a HttpRuntime Cache entry with key "ProjectId"</h2> 
    } 
</div> 

これはそのHttpRuntime.Cache["ProjectId"]店舗、オンラインユーザーのための文字列&日付時刻の辞書と仮定すると、ユーザーと自分の時間を一覧表示されます。

EDIT:キャッシュにデータを設定する方法のサンプルコードを表示します。

これはキャッシュにアイテムを追加する方法です。アプリのどこかでこのコードを実行する必要があります(ユーザーがチャットにログインして新しいエントリを追加するときなど)。

var data = HttpRuntime.Cache["ProjectId"] as Dictionary<string, DateTime>; 
if(data==null) 
    data=new Dictionary<string, DateTime>(); 
data.Add("Scott",DateTime.Now); 
data.Add("Shyju", DateTime.Now); 
data.Add("Kevin", DateTime.Now); 
HttpRuntime.Cache["ProjectId"] = data; 
+0

まだ空白のページ@Shyjuを取得しています –

+0

このコードは表示されていますか?メッセージが表示されますか(「ユーザーなし」?)あなたは空白のページを意味しますか?完全な空白のページ?それは何もない?その後、あなたのページに何か他のエラーがあるかもしれません。私はあなたがすべてのコードを削除し、ちょうどこれを置くと何が起こるかをお勧めします – Shyju

+0

すべてのコードを削除するすべてのコードを削除する私は空白のページを取得している –

関連する問題