使用模型绑定将签名的用户名传递给AngularJS控制器

时间:2016-07-12 02:31:18

标签: asp.net angularjs asp.net-core

我正在尝试将应用程序中已登录的用户名传递给角度控制器。我已经使用像这样的模型绑定传递其他参数并且完美地工作

<input class="form-control" type="text" id="argOne" name="argOne" ng-model="viewModel.test.argumentOne" />

我尝试使用隐藏输入传递用户名,但我在控制器上得到一个未定义的值

<input class="form-control" type="hidden" id="argTwo" name="argTwo" ng-model="viewModel.test.argumentTwo" value=@UserManager.GetUserName(User) />

我在这里看过类似的例子,但直接从ASP.NET核心的UserManager类中获取值时没有具体的说明

更新:我不是在询问如何显示Signed in用户,问题是如何使用模型绑定将该值传递给角度控制器,如问题的第一行代码所示,但隐藏字段或类似用户看不到的东西

2 个答案:

答案 0 :(得分:2)

根据您的想法,我建议您使用范围变量来保留用户名,而不是将其保存在隐藏字段中。你要保留的是一个用户名,我假设你可能需要在你的angularjs app中的各种控制器中使用它。因此,我宁愿将其保留在应用程序范围内以利用范围继承。

所以我的建议看起来像这样:

在HTML中,您将用户名分配给相关的范围变量$rootScope.username

<html ng-app="myApp" ng-init="$rootScope.username='@UserManager.GetUserName(User)'">
 ....
<div ng-controller="myController">
    Your Username is : {{$rootScope.username}}
</div>

我可以在任何地方使用JS:

var app = angular.module('myApp',[]);
app.controller('myController',function(){ 
// you can use $scope.username in this code and it would be inherited from the $rootScope.username
...
});

答案 1 :(得分:0)

您应该将代码更改为

var user = UserManager.GetUserName(User)
if(user)
{
 $scope.userName = user; 
}

<input class="form-control" type="hidden" id="argTwo" name="argTwo" ng-model="userName" />