【问题标题】:How to get Id from IList<model> within model?如何从模型中的 IList<model> 获取 Id?
【发布时间】:2019-10-07 13:19:38
【问题描述】:

有没有一种简单的方法可以从另一个模型中的 IList 获取 id?最好用剃须刀?我想在 IList 角色中获取 RoleId。

    public class EditUserViewModel
    {

        public EditUserViewModel()
        {
            Claims = new List<string>(); Roles = new List<string>();
        }

        public string Id { get; set; }

        [Required]
        public string UserName { get; set; }

        [Required]
        [EmailAddress]
        public string Email { get; set; }

        public string City { get; set; }

        public List<string> Claims { get; set; }

        public IList<string> Roles { get; set; }

    }
}


   public class ManageUserRoleViewModel
    {

            public string RoleId { get; set; }
            public string RoleName { get; set; }
            public bool IsSelected { get; set; }
            //Viewbag is used to store UserId

    }

   public class UserRoleViewModel
    {
        public string UserId { get; set; }
        public string UserName { get; set; }
        public bool IsSelected { get; set; }
        //Viewbag is used to store UserId

    }
  <table class="table table-hover table-md ">

                                <thead>
                                    <tr>
                                        <td class="text-left TableHead">Role</td>
                                        <td class="text-right TableHead">Delete</td>

                                    </tr>
                                </thead>

                                @*--Table Body For Each to pull DB records--*@
                                <tbody>
                                    @foreach (var role in Model.Roles)
                                    {
                                        <tr>
                                            <td>@role</td>
                                            <td>
                                                <button class="sqButton btnRed float-right zIndex" id="Delete" title="Delete" data-toggle="ajax-modal" data-target="#deleteRoleUser" data-url="@Url.Action("Delete", "Administration", new {Id = Model.Id , Type = "roleUser"})">
                                                    <i class="glyphicon glyphicon-remove"></i>
                                                </button>
                                            </td>

                                        </tr>
                                    }
                                </tbody>

                            </table>

我正在尝试将角色 ID 与 @Url.Action 中的其他参数一起传递,但我似乎无法弄清楚将其拉入的秘密,因此我可以将其传递给后端控制器。

【问题讨论】:

  • 但是您的 Model.Roles 列表项没有 RoleId,因为它是 List&lt;string&gt;...
  • EditUserViewModel 中,您必须使用完整的Role 对象,而不仅仅是string,如下所示:public class EditUserViewModel { /* ... */ public IList&lt;Role&gt; Roles { get; set; } }

标签: c# asp.net-mvc razor


【解决方案1】:

问题是

public IList&lt;string&gt; Roles { get; set; }

仅包含字符串,因此无需查找 ID。您必须将此行更改为

public IList&lt;ManageUserRoleViewModel&gt; Roles { get; set; }

这样,您就有了一个包含 ID 的对象列表。然后,在您看来,您可以这样做:

@Model.Roles.FirstOrDefault(x =&gt; x.RoleId == YOUR_UNIQUE_ID)

这会给你一个对象来执行进一步的逻辑。

【讨论】:

  • 如果有帮助,请选择此作为正确答案。 :)
  • 刚刚做到了!想先确定一下。 == YOUR_UNIQUE_ID 还有一件小事,我假设它可以是任何东西。但它给了我“在这种情况下不存在”。这是一个非常无知的问题,但我很挣扎。
  • 我假设您有一个整数或一个字符串在某个地方要查找。用它替换“YOUR_UNIQUE_ID”,你就完成了。如果您想在 Razor 视图中的 @foreach 语句中使用 role,则必须在花括号内这样做。
猜你喜欢
  • 2016-01-02
  • 2015-12-22
  • 1970-01-01
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 2015-04-26
相关资源
最近更新 更多