如何在我的数据层中使用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
 }

我很想朝着正确的方向推动,我很难想出正确的方法来使用控制器作为语法

如何在我的数据层中使用ng选项和控制器作为语法和枚举

因此,经过大量研究和帮助,我发现在用作track by时必须隐含,否则将破坏选择逻辑。

这是我的固定标记:

  <select ng-model="vm.user.useRole" ng-options="role.id as role.name for role in vm.roles">