tyson Hamda Ответов: 1

Как отправить выбранные элементы списка в контроллер MVC ASP.NET


Я хочу отправить все выбранные элементы из списка в контроллер но он отправляет null пожалуйста помогите мне

Что я уже пробовал:

HTTP-запрос GET пункты загрузки из базы данных в список
public ActionResult SelectUser()
       {
           var courses = _context.Courses.ToList();
           var users = _context.Users.ToList();
           var viewmodel = new SelectUserViewModel
           {
               Courses =  courses,
               ApplicationUsers = users

           };
           return View(viewmodel);
       }

[HttpPost]
public ActionResult AddUser(SelectUserViewModel enrolled)
{
    return RedirectToAction("SelectUser", "Admin");
}



Смотреть
@model Elearning_system.View_Model.SelectUserViewModel
<section>
    <div class="container">
        <div class="row">
            <div class="col-lg-6 mx-auto">
                <div class="card shadow-v2">
                    <div class="card-header border-bottom">
                        <h4 class="mt-4">
                            <center>Select User</center>
                        </h4>
                    </div>
                    <div class="card-body">


                        @using (Html.BeginForm("AddUser", "Admin", FormMethod.Post, new { @class = "px-lg-4", role = "form" }))
                        {
                            
                            @Html.AntiForgeryToken()
                            @Html.ValidationSummary("", new { @class = "text-danger" })
                            //@Html.LabelFor(m => m.UserEnrolled.Course)
                            <div class="input-group input-group--focus mb-lg-4" style="width: 100%">

                                @Html.DropDownListFor(m => m.UserEnrolled.CourseId, new SelectList(Model.Courses, "Id", "CourseName"), "Select Course", new { @class = "form-control pl-2" })

                            </div>
                            <div class="input-group input-group--focus mb-lg-4" style="width: 100%">
                                @Html.ListBoxFor(m => m.UserEnrolled.UserEnrolledId, new MultiSelectList(Model.ApplicationUsers, "Id", "FullName"), new { @class = "form-control pl-2" })
                              @*  @Html.DropDownListFor(m => m.UserEnrolled.UserEnrolledId, new SelectList(Model.ApplicationUsers, "Id", "FullName"), "Select Course", new { @class = "form-control pl-2" })*@

                            </div>
                            <input type="submit" />


                        }
                    </div>
                </div>
            </div>
        </div>
    </div>
</section>


ModelClass
public class UserEnrolled
   {
       public int Id { get; set; }

       [NotMapped]
       [Required]
       public  IEnumerable<SelectListItem> UserEnrolledId { get; set; }


       [Required]
       public int CourseId { get; set; }



       [Required]
       public Course Course { get; set; }

       [NotMapped]
       public bool Ischeck { get; set; }

       [Required]
       public ApplicationUser ApplicationUser { get; set; }

   }

j snooze

Эта ссылка может помочь указать вам правильное направление.

https://stackoverflow.com/questions/29155328/mvc-multiselectlist-posts-null-when-form-is-submitted

1 Ответов

Рейтинг:
12

dnxit

Я думаю что причина в следующем

@Html.ListBoxFor(m => m.UserEnrolled.UserEnrolledId, new MultiSelectList(Model.ApplicationUsers, "Id", "FullName"), new { @class = "form-control pl-2" })

UserEnrolledId должен быть того же типа, что и ваш ApplicationUsers ' s Тип идентификатора есть.

например, если это
int
затем

public  IEnumerable<int> UserEnrolledId { get; set; }

Вот рабочий пример
модель представления
public IEnumerable<int> BranchIds { get; set; }
public List<system.web.mvc.selectlistitem> Branches { get; set; }

Смотреть
@Html.ListBoxFor(m => m.BranchIds, new MultiSelectList(Model.Branches, "value", "text"), new { @class = "form-control pl-2" })