Как получить идентификатор из IList <model>в пределах модели? - PullRequest
1 голос
/ 07 октября 2019

Есть ли простой способ получить идентификатор из IList в другой модели? Предпочтительно использовать бритву? Я хочу получить RoleId в ролях IList.

    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>

Я пытаюсь передать Role Id с другими параметрами в действии @ Url.Action, но, похоже, не могу понять секрет его извлечения, поэтому я могу передатьэто к внутреннему контроллеру.

1 Ответ

3 голосов
/ 07 октября 2019

Проблема в том, что

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

Содержит только строки, поэтому нет идентификатора для поиска. Вам придется изменить эту строку на

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

Таким образом, у вас есть список объектов, которые также содержат идентификатор. Затем, по вашему мнению, вы можете сделать это:

@Model.Roles.FirstOrDefault(x => x.RoleId == YOUR_UNIQUE_ID)

Это даст вам объект для дальнейшей логики.

...