【问题标题】:SelectList(Model.RoleDropDownDisp,"RoleId","RoleName") causes an ArgumentNullException: Value cannot be null. (Parameter 'items')SelectList(Model.RoleDropDownDisp,"RoleId","RoleName") 导致 ArgumentNullException:值不能为空。 (参数“项目”)
【发布时间】:2021-03-15 19:58:52
【问题描述】:

在帖子中,我在保存之前进行了一些错误检查,如果为真,我返回 Page()

在调试中我发现这是我的下拉选择有问题

    <div class="form-group">
        <label asp-for="WorkColUser.WorkColRoleId" class="control-label"></label>
    </div>
    <select id="RoleId" asp-for="RoleDropDownDisp" asp-items="@(new SelectList(Model.RoleDropDownDisp,"RoleId","RoleName"))">
        <option value="" selected disabled>@Localizer["--Choose Role--"]</option>
    </select>
    <div class="form-group">
        <input asp-for="WorkColUser.WorkColRoleId" readonly="readonly" class="form-control" />
        <span asp-validation-for="WorkColUser.WorkColRoleId" class="text-danger"></span>
    </div>

只有当我没有错误时才会出现问题。否则一切正常。

我的 RoleDropDownDisp 定义如下:

public IEnumerable<Role> RoleDropDownDisp { get; set; }

我可以做些什么来避免这个错误?感谢您的帮助

【问题讨论】:

    标签: razor argumentnullexception


    【解决方案1】:

    我认为您最好在模型中处理 null 情况,但仍然可以快速解决:

    @(new SelectList(Model?.RoleDropDownDisp ?? new List<Role>(),"RoleId","RoleName"))
    

    【讨论】:

    • 谢谢它不再崩溃了。但是现在我的下拉列表是空的,看起来不太好。如何重新加载我的下拉列表。你能解释一下为什么 RoleDropDownDisp 返回后为 Null 吗?是 IEnumerable RoleDropDownDisp { get;放; } 没有保留?感谢您的帮助
    • 什么时候发生?发布表格时?可以添加详细信息吗?
    • 我发现了。谢谢帮忙!!在发布模型时,我的列表被删除了。所以我不得不在 Post 过程中再次添加我的列表的读取。 RoleDropDownDisp = 等待 _context.Role.ToListAsync(); // 添加因为我没想到在帖子中我会丢失我的列表。总之你帮了大忙!!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多