Razor页面<input asp-for>提交int类型值始终为null问题
原因分析
核心问题在于 Department 类中的 defaultDisplayOrder、managerRoleId、userRoleId 是字段(Field),而非C#属性(Property)。Asp.Net Core的模型绑定系统仅对带有 get 和 set 访问器的属性生效,不会处理普通字段。
解决方案
将这些字段修改为自动属性,添加 get; set; 访问器:
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Diagnostics.CodeAnalysis; namespace Scratch.Data { public class Department { [Key] public int Id { get; set; } [Required] public string departmentName { get; set; } [Required] [ForeignKey("AspNetUsers")] public string departmentManagerId { get; set; } [AllowNull] [ForeignKey("AspNetUserRoles")] public string? managerRoleId { get; set; } [AllowNull] [ForeignKey("AspNetUserRoles")] public string? userRoleId { get; set; } [AllowNull] public int? defaultDisplayOrder { get; set; } } }
修改后,模型绑定系统就能正确识别这些属性,提交的数值会被正常绑定到 Department.defaultDisplayOrder 中。
内容的提问来源于stack exchange,提问作者DED
相关产品推荐
相关产品推荐

