2013-04-10 60 views
2

我学习signalR如何使用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

耻辱,它的一个非常有效的问题,而不是以往任何时候都问,如果你-1,那么至少张贴评论。 – 2013-04-12 09:07:50

回答

3

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

根据您的视图引擎,像...

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

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

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

我正在使用剃须刀 – 2013-04-12 17:35:50

+0

我用Razor语法更新了我的答案 – Basic 2013-04-12 17:41:41

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(); 
      } 

     }; 
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) 
     }