2016-03-02 101 views
0

我的計劃是創建一個簡單的聊天網站。我正在使用帶有剃鬚刀和signalR的聊天室。我已經完成了默認頁面和聊天室頁面,但我不知道如何「動態」創建聊天室頁面的多個實例,以便/ chatroom/1與/ chatroom/2是不同的聊天室。 2 instances of chat room page動態創建網站實例

我假設這可以通過製作10個聊天室頁面並將它們命名爲1-10來完成,但我認爲那是不好的做法。我已經完成了路由,以便/ room/[number]打開聊天室頁面的一個實例,但我不知道如何使它們彼此分離。如果需要代碼,我可以上傳到github。

編輯: Github

路由:

@using System.Web.Routing; 
@{ 
    RouteTable.Routes.MapWebPageRoute("{chatroom}/{number}", "~/room.cshtml", 
     constraints: new { chatroom = "room", number = "[1-9]"}); 
} 

room.cshtml

@{ 
    Layout = "~/_Layout.cshtml"; 

    string s = Request.Url.AbsolutePath; 
    var RoomNumber = s.Substring(s.LastIndexOf("/") +1); 
} 


<div id="chat"> 
    <textarea id="chatBox" rows="40" cols="50" readonly="readonly"></textarea> 
    <input type="text" id="message" placeholder="Your message"/> 
    <input type="button" id="msgSend" value="Send" /> 
</div> 

<script type="text/javascript"> 
    //simulate msgSend button with enter press when textbox focused 
    $('#message').bind('keyup', function (e) { 
     if (e.keyCode === 13) { // 13 is enter key 
      $('#msgSend').click(); 
     } 

    }); 
     $(function() { 
      // Declare a proxy to reference the hub. 
      var chat = $.connection.chatHub; 
      // Create a function that the hub can call to broadcast messages. 
      chat.client.broadcastMessage = function (message) { 
       // Html encode display message. 
       var encodedMsg = $('<div />').text(message).html(); 
       //get current time 
       var currentdate = new Date(); 
       var datetime = 
       +currentdate.getHours() + ":" 
       + currentdate.getMinutes() + ":" 
       + currentdate.getSeconds(); 
       // Add the message to the page. 
       $('#chatBox').append('\n'+datetime+" "+encodedMsg); 
      }; 
      // Set initial focus to message input box. 
      $('#message').focus(); 
      // Start the connection. 
      $.connection.hub.start().done(function() { 
       $('#msgSend').click(function() { 
        // Call the Send method on the hub. 
        chat.server.send($('#message').val()); 
        // Clear text box and reset focus for next comment. 
        $('#message').val('').focus(); 
       }); 
      }); 
     }); 
    </script> 
+0

歡迎來到StackOverflow!我會說絕對上傳代碼 - 只需編輯您的問題並添加相關的代碼,它會讓您更容易地回答您的問題。 – Eoin

+0

問題是,我不知道哪部分代碼是相關的。我甚至不知道這整個事情是如何調用的,因此我不能使用谷歌找到答案。 – JanRad

+0

在這種情況下,請將路由代碼和您正在使用的現有聊天室代碼放在一起 - 太多的代碼比沒有代碼更好。 – Eoin

回答