将userID作为值和用户名作为ng-model分配给select标记

时间:2016-06-20 23:56:57

标签: html angularjs asp.net-mvc

我的问题可能很简单,但我很难解决它。我正在使用ASP.Net MVC和AngularJS开发应用程序。我正在使用select tag列出用户。我已将select tag分配给我ng-model分配给div的{​​{1}}用于实时绑定(用户名)。

我的问题是,当我更改select tag中的项目(用户)并保存时,我想使用ID而不是用户名进行保存。

如你所知,ng-model等于username我想要那样,但是当涉及到保存数据时,我想使用值,我希望它与userID相同而不是名称

<div>{{supervisor}}</div>
<select ng-model="supervisor">
    <option ng-repeat="x in supervisors" ng-selected='supervisor == (x.supervisorfName+" "+x.supervisorlName)'>{{x.supervisorfName+" "+x.supervisorlName}}</option>
 </select>
<a href="javascript:void(0)" ng-click="updateUserSupervisor()"><i class="fa fa-floppy-o fa-lg" aria-hidden="true"></i></a>

以上select tag列出了数据库表中的用户。它与顶部的ng-model具有相同的div ...当我点击select tag下方的保存图标时,我想更新数据库表但不使用{{1}因为它是名字。相反,我想使用ng-model

那么,如何在ID中添加ng-model以外的ID?

以下是调用数据库的angularJS控制器代码:

select tag

最后,下面是MVC代码:

$http.get('/Home/GetSupervisor')
    .then(function (response) {
        $scope.supervisors = response.data;
    })
    .catch(function (e) {
        console.log("error", e);
        throw e;
    })
    .finally(function () {
        console.log("This finally block");
    });

根据要求,下面是我的角度控制器:

public JsonResult GetSupervisor()
    {
        var db = new scaleDBEntities();
        return this.Json((from userObj in db.Users
                          select new
                          {
                              supervisorId = userObj.Id,
                              supervisorfName = userObj.usrFirstName,
                              supervisorlName = userObj.usrLastName,                                  
                          })
                          , JsonRequestBehavior.AllowGet
                        );
    }

});

1 个答案:

答案 0 :(得分:0)

您可以将ng-model设置为对象(代表您的用户/主管实体),而不仅仅是名称。

因此,在您的范围中添加一个名为supervisor的新属性。

myApp.controller('mainController', function ($scope, $http) {

   $scope.supervisor=null;

  //your existing code goes here
};

现在,在您的视图中,您可以使用name属性显示所选的主管名称。

<div>{{supervisor.supervisorfName}} {{supervisor.supervisorlName}}</div>

<select ng-options="option.supervisorfName for option in supervisors"
        ng-model="supervisor"></select>

当您需要保存时,您可以从id属性中获取所选主管的ID,例如$scope.supervisor.supervisorId

要在选项中显示名字和姓氏,您只需要连接

<select ng-options="option.supervisorfName+' '
                                       +option.supervisorlName for option in supervisors"
        ng-model="supervisor"></select>