【问题标题】:CS0029 C# Cannot implicitly convert type to 'int?' ASP.NET CORE 5 MVC IdentityCS0029 C# 无法将类型隐式转换为“int?” ASP.NET CORE 5 MVC 标识
【发布时间】:2021-03-11 21:52:41
【问题描述】:

我正在使用 ASP.NET Core 5 MVC 标识。我想自定义注册并从另一个表中添加一个选择列表,该用户可以决定是否选择一个选项。 所以我正在关注这个答案 ASP.NET Core Identity Model Customization Select List

但我反驳了一个问题。我也做了差不多的。

用户模型

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; }

注册.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)

我没有发布东西的经验,而且我是编码的菜鸟。希望有意义

【问题讨论】:

  • 为什么你的int 可以为空(?int 之后)?
  • 还有完整的堆栈跟踪吗?这会告诉你是哪一行导致了错误
  • 这没有意义:GameID = _context.Games.Where(x =&gt; x.ID == Input.GameID) 您正在尝试将 游戏列表 存储为单个 int? 值。游戏列表不仅仅是一个整数,而是更多的数据。这就是错误告诉您的内容,您的游戏对象集合无法转换为int?。你想做什么?
  • 你只是想获得一个游戏ID吗?如果是的话 GameID = _context.Games.Where(x => x.ID == Input.GameID) 这就是问题所在
  • 这段代码看起来 nothing 与您发布链接的问题中的代码相似;该代码不是异步的,没有InputModel,没有使用可为空的int (int?);总的来说,这段代码对于理解你的问题根本没有用。

标签: c# asp.net-core asp.net-core-mvc


【解决方案1】:

试试这样 在你的 register.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

在 razor 中从该链接中删除该选择行并将其更改为

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

我不知道链接上的人是如何做到的,但在该链接的上下文中,帖子是关于我相信的注册表中的选择。

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2015-03-28
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多