我的问题可能很简单,但我很难解决它。我正在使用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
);
}
});
答案 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>