2

我正在研究signalR的以下示例

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

我想实现它,而且代码就在那里,但是我不希望用户在提示窗口中输入用户名,我要使页面可供登录用户使用,因此我将拥有 context.User。

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

多谢

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

3 回答 3

3

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

根据您的视图引擎,类似...

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

或者更好,将其作为视图模型的属性提供,这样它就可以

 $('#displayname').val('@(Model.User.Replace("'", "\\'"))'); 
于 2013-04-12T17:30:59.550 回答
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();
            }

        };
于 2013-05-14T05:28:41.447 回答
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)
        }
于 2015-05-22T12:47:44.487 回答