如何在我的数据层中使用ng选项和控制器作为语法和枚举
本文关键字:控制器 选项 枚举 语法 ng 我的 数据 | 更新日期: 2023-09-27 18:24:58
我正试图从下拉列表中将一个数值传递回我的对象,该对象正使用$http.post发送到后端。这似乎是在我的控制器中使用ng选项和对象数组的完美位置。我一直在尝试正确的语法,但无法从文档或搜索旧帖子中获得。我甚至无法获得用控制器中数组中的名称填充的下拉列表。我传递回web API控制器的对象需要有一个数值,因为下拉列表所关联的C#模型上的属性实际上是数据模型上的enum。
我的标记如下:
<select ng-model="vm.user.userRole" ng-options="role.name for role in roles track by role.id">
</select>
我的控制器看起来像这样:
(function() {
"use strict";
angular.module('app').controller("userEntryController", ["$http","$timeout", userEntryController]);
function userEntryController($http, $timeout) {
var vm = this;
vm.user = {}
vm.newUser = {};
vm.saving = true;
vm.successMessage = null;
vm.errorMessage = null;
vm.saveUser = function () {
$http.post("http://localhost:55928/api/Users/", vm.user)
.then(function() {
//success
vm.saving = false;
vm.successMessage = "User has been updated ....";
$timeout(function() {
vm.saving = false;
vm.successMessage = null;
}, 1500);
},
function() {
//error
vm.errorMessage = "Failed to save User ...";
});
}
vm.roles = [
{id:1, name:"Admin"},
{id:2, name:"Doctor"},
{id: 3, name: "Therapist"},
{id:4, name: "Patient"}
];
}
})();
C#模型看起来像这个
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace PTWebApp.DataModels
{
public class User
{
public User()
{
Users = new List<User>();
}
[Key]
public int Id { get; set; }
[Required]
public string UserName { get; set; }
[Required]
public Role UseRole { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
[Required]
public string City { get; set; }
[Required]
public string County { get; set; }
[Required]
public string State { get; set; }
[Required]
public string ZipCode { get; set; }
[Required]
public string Country { get; set; }
[Required]
public string Telephone { get; set; }
public string Telephone2 { get; set; }
public string SocialSecurityNumber { get; set; }
public string InjuryType { get; set; }
public string Location { get; set; }
public string DeaNumber { get; set; }
public List<User> Users { get; set; }
}
}
public enum Role
{
Admin = 1,
Doctor = 2,
Therapist = 3,
Patient = 4
}
我很想朝着正确的方向推动,我很难想出正确的方法来使用控制器作为语法
因此,经过大量研究和帮助,我发现在用作track by时必须隐含,否则将破坏选择逻辑。
这是我的固定标记:
<select ng-model="vm.user.useRole" ng-options="role.id as role.name for role in vm.roles">