2012-03-19 86 views
2

如何使用JQuery/javascript获取ASP .NET MVC应用程序客户端上的用户名并将其发回服务器以供控制器处理?使用ASP.NET MVC在客户端获取用户名

我想发生的事件的顺序如下:

  1. 获取客户机的用户名。
  2. 将用户名发回服务器。
  3. 实例化在构造函数中接受用户名的新对象。 (使用Ninject for DI)
  4. 将对象注入接收控制器。
+0

您的应用程序有任何形式的认证?如果是这样,什么样的? (例如窗体,Windows) – Jacob 2012-03-19 23:58:05

+0

认证被认为是在用户登录到Intranet时完成的(所以Windows身份验证)。 – Seth 2012-03-20 00:11:13

回答

3

在客户端的东西,你不应该有权限访问用户名。你也不需要它。在你的服务器端的代码,你可以用这个代码访问Windows身份验证的用户名:

var username = HttpContext.Current.User.Identity.Name.ToString(); 
+0

所以当我说Windows身份验证时,意思是当用户使用Active Directory登录到计算机上时。不在Web服务器上。服务器机器如何知道客户机器用户名?这些信息是否总是通过HttpContext对象发布? – Seth 2012-03-20 00:50:14

+0

您必须为您的网站启用Windows身份验证。如果您的用户使用IE,则应该自动进行身份验证。其他浏览器可能会要求他们重新提交用户名和密码。 – Jacob 2012-03-20 00:52:43

0

要建立在@Jacob答案的顶部,获得服务器端控制器中的值填充视图模型属性与变量的这个值用户名

var username = HttpContext.Current.User.Identity.Name.ToString(); 
vmUser.UserName = username; // Here vmUser is a sample ViewModel 

在CSHTML,如果用剃刀引擎使用隐藏变量,通过使用构建体中的一个下面

@Html.Hidden or 
    @Html.HiddenFor(um=>um.UserName) 

访问它在Jquery的或JavaSc RIPT 希望这会增加对有助于在MVC和jQuery

0

要添加到这里的讨论新手,我们可以得到的用户名进入一个javascript变量,如下所示:

<text>var jsUser = '@HttpContext.Current.User.Identity.Name.ToString()';</text>