CS0029 C# 无法将类型隐式转换为'int?' ASP.NET 核心 5 MVC 标识



我使用的是ASP.NET Core 5 MVC Identity。我想自定义注册并从另一个表中添加一个选择列表,用户可以决定是否选择一个选项。所以我遵循这个答案ASP.NET核心标识模型自定义选择列表

但我解决了一个问题。我也这么做了。

用户模型

public class ApplicationUser : IdentityUser
[ForeignKey("GameID")]
public int? GameID { get; set; }

游戏模型

public int ID { get; set; }
public string GameName { get; set; }
public virtual ICollection<ApplicationUser> ApplicationUser { get; set; }

Register.cshtml.cs

private readonly ApplicationDBContext _context
public IEnumerable<SelectListItem> GameList { get; set; }
RegisterModel{}()part
ApplicationDBContext context
_context = context;
InputModel
public int? GameID { get; set; }
OnGetAsync
GameList = availableLevels.Select(x => new SelectListItem() { Text = x.GameName, Value = x.ID.ToString() }).ToList();
OnPostAsync
GameID = _context.Games.Where(x => x.ID == Input.GameID)

我没有发布东西的经验,而且我不擅长编码。希望它有意义

试试这样的东西在您的寄存器中。cshtml

in OnGetAsync
GameList = _context.model name in your DBcontext.Select(x => new SelectListItem { Text = x.yourgames???.ToString(), Value = x.ID.ToString() }).ToList();

在你的OnPostAsync上保持简单的

GameID = Input.GameID

在剃刀中删除该链接中的选择行,并将其更改为

<select asp-for="Input.GameID" asp-items="Model.GameList" class="form-control">

我不知道链接上的人是怎么做的,但在链接和帖子的背景下,我认为这是关于注册形式的选择。

最新更新