如何使用SignalR在聊天应用程序中发送用户的LOGGED

时间:2013-04-10 09:55:32

标签: c# jquery asp.net-mvc signalr signalr-hub

我正在研究以下signalR

的例子

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc-4

我想实现它,并且代码就在那里,但是我不希望用户在提示窗口中输入用户名,我将使该页面可供登录用户使用,因此我将有上下文。用户。

我想更改提示部分以使用服务器端的context.User,但我不知道如何。

非常感谢

 $('#displayname').val(prompt('Enter your name:', '')); 

3 个答案:

答案 0 :(得分:3)

您可以提供有关页面加载的信息或通过AJAX检索它。我建议前者。

取决于您的视图引擎,类似于......

 $('#displayname').val('@(Context.User.Replace("'", "\\'"))'); 

或更好,将其作为视图模型的属性提供,因此它将是

 $('#displayname').val('@(Model.User.Replace("'", "\\'"))'); 

答案 1 :(得分:1)

我使用了以下代码。但是,它不会将您重定向到另一个页面。但是,当用户登录到应用程序时,它会使登录窗口不可见,并显示聊天室。希望这会有所帮助。

$(function () {
        setScreen(false);
        var chatHub = $.connection.chatHub;
        registerClientMethods(chatHub);

        $.connection.hub.start().done(function () {
            registerEvents(chatHub)
        });
    });

function setScreen(isLogin) {
            if (!isLogin) {
                $("#divchat").hide();
                $("#divLogin").show();
            }
            else {
                $("#divchat").show();
                $("#divLogin").hide();
            }

        };

答案 2 :(得分:1)

  // If the user is Authenticated shows de nick if not sets it to invitado + random number
        if (Request.IsAuthenticated) {
            $('#displayname').val(User.Identity.GetUserName());
        } else {
            $('#displayname').val("invitado" + Math.floor((Math.random() * 100) + 1));
            // $('#displayname').val(prompt('Enter your name:', '')); (Alias Window... what you had)
        }