“ mes”:“价值不能为null。 (参数')"当想要显示值时的值时,请使用复选框

发布于 2025-01-28 19:38:53 字数 2498 浏览 2 评论 0原文

嗨,我有3张桌子:角色,允许,哥伦比亚 在我的Razor Page视图中,我想显示每次标记复选框的特殊角色的权限。在每个角色中,我在树模型中显示所有权限(我的权限是父母表) 因此,出于这个原因,我做了一个模型

           [Table("tblPermission", Schema = "cmn")]
            public class Permission
            {
          [Key]
             public int PermissionId { get; set; }
             public string PermissionTitle { get; set; }
            public int? ParentId { get; set; }

           [ForeignKey("ParentId")]
           public List<Permission> Permissions { get; set; }
           public List<RolePermission> RolePermissions { get; set; }
           }

和两个动作

  [BindProperty]
    public Role Role { get; set; }
    public void OnGet(int id)
    {
        Role = _permissionService.GetRoleById(id);
       var b= _permissionService.GetAllPermission();
        ViewData["Permissions"] = b;
       
        var a= _permissionService.permissionsRole(id);
        ViewData["SelectedPermission"] = a;
    }


    public IActionResult OnPost()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }
        _permissionService.UpdateRole(Role);
        return RedirectToPage("Index");
    }

,我的观点就像Bellow:

 @page "{id}"
 @using Entities.Permission
 @model Pages.Admin.Roles.EditRoleModel
 @{
   ViewData["Title"] = "Edit role";
   List<Permission> permissions = ViewData["Permissions"] as List<Permission>;
   List<int> SelectedPermissions = ViewData["SelectedPermissions"] as List<int>;
  }

<div class="panel-body">
   <ul>
     @foreach (var permission in permissions.Where(p => p.ParentId == null))
       {
      <li>
      <input type="checkbox" name="SelectedPermission" 
@((SelectedPermissions.Any(p=>p==permission.PermissionId)?"checked":"")) 
value="@permission.PermissionId" /> @permission.PermissionTitle
 @if (permissions.Any(p => p.ParentId == permission.ParentId))
{
<ul>
@foreach (var sub in permissions.Where(p => p.ParentId == permission.PermissionId))
  {
    <li>
  <input type="checkbox"  name="SelectedPermission"  
 @((SelectedPermissions.Any(p=>p==sub.PermissionId)?"checked":"")) value="@sub.PermissionId" 
/> @sub.PermissionTitle
</li>
  }   
 </ul>
  }
 </li>
  }
</ul>
</div>

在此行中:((selectpermissions.any(p =&gt; p == sub.permissionId)?“ checked”:“:”))我得到错误: “ mes”:“值不能为null。(参数'source')。当我查看时,我发现我的ViewData都不是null。

Hi I have 3 tables: Role , Permission , RolePermission
In my Razor page view I want to show each permission that is true for a special role with marking the check box . In every role I show all permission in a tree model (my permission is a parent child table)
So for this reason I make a model

           [Table("tblPermission", Schema = "cmn")]
            public class Permission
            {
          [Key]
             public int PermissionId { get; set; }
             public string PermissionTitle { get; set; }
            public int? ParentId { get; set; }

           [ForeignKey("ParentId")]
           public List<Permission> Permissions { get; set; }
           public List<RolePermission> RolePermissions { get; set; }
           }

And two action

  [BindProperty]
    public Role Role { get; set; }
    public void OnGet(int id)
    {
        Role = _permissionService.GetRoleById(id);
       var b= _permissionService.GetAllPermission();
        ViewData["Permissions"] = b;
       
        var a= _permissionService.permissionsRole(id);
        ViewData["SelectedPermission"] = a;
    }


    public IActionResult OnPost()
    {
        if (!ModelState.IsValid)
        {
            return Page();
        }
        _permissionService.UpdateRole(Role);
        return RedirectToPage("Index");
    }

And my view is like bellow :

 @page "{id}"
 @using Entities.Permission
 @model Pages.Admin.Roles.EditRoleModel
 @{
   ViewData["Title"] = "Edit role";
   List<Permission> permissions = ViewData["Permissions"] as List<Permission>;
   List<int> SelectedPermissions = ViewData["SelectedPermissions"] as List<int>;
  }

<div class="panel-body">
   <ul>
     @foreach (var permission in permissions.Where(p => p.ParentId == null))
       {
      <li>
      <input type="checkbox" name="SelectedPermission" 
@((SelectedPermissions.Any(p=>p==permission.PermissionId)?"checked":"")) 
value="@permission.PermissionId" /> @permission.PermissionTitle
 @if (permissions.Any(p => p.ParentId == permission.ParentId))
{
<ul>
@foreach (var sub in permissions.Where(p => p.ParentId == permission.PermissionId))
  {
    <li>
  <input type="checkbox"  name="SelectedPermission"  
 @((SelectedPermissions.Any(p=>p==sub.PermissionId)?"checked":"")) value="@sub.PermissionId" 
/> @sub.PermissionTitle
</li>
  }   
 </ul>
  }
 </li>
  }
</ul>
</div>

At this line “@((SelectedPermissions.Any(p=>p==sub.PermissionId)?"checked":""))” I get the error :
"mes":"Value cannot be null. (Parameter 'source')" .And when I Check out I found that none of my viewData is not null.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文