Элемент модели, передаваемый в словарь, имеет тип 'System.Collections.Generic.List, но для этого словаря требуется элемент модели типа' XXX.XXX.XXX ' - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь использовать выпадающий список со строгим контролем типов для своего приложения.У меня также есть поля для текстовых полей.Но когда я передаю @model Aayumitra.Models.RegisterViewModel @using Aayumitra.Models;, я получаю ошибку ниже.

Элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List`1 [System.Web.Mvc.SelectListItem] ', но для этого словаря требуется элемент модели типа' XXX.XXX.XXX '.

AccountViewModel

 public class RegisterViewModel
    {     

        public string FirstName { get; set; }
        public string MiddleName { get; set; }
        public string LastName { get; set; }
        public string Gender { get; set; }
        public IEnumerable<SelectListItem> Genders { get; set; }

    }

Контроллер

 private static List<SelectListItem> GetGenders()
        {
            AayumitraDBEntities db = new AayumitraDBEntities();
            List<SelectListItem> GenderList = (from p in db.Genders.AsEnumerable()
                                                 select new SelectListItem
                                                 {
                                                     Text = p.GenderType,
                                                     Value = p.GenderId.ToString()
                                                 }).ToList();


            //Add Default Item at First Position.
            GenderList.Insert(0, new SelectListItem { Text = "--Select Gender--", Value = "" });
            return GenderList;
        }

        //
        // GET: /Account/UpdatePatient
        [AllowAnonymous]
        public ActionResult UpdatePatient()
        {
            List<SelectListItem> GenderList = GetGenders();
            return View(GenderList);
        }

Просмотр

@model Aayumitra.Models.RegisterViewModel
@using Aayumitra.Models;


                    @using (Html.BeginForm())
                    {
                        <div class="row">
                            <div class="col-md-4">
                                <div class="profile-container">
                                    <div class="profile">
                                        <img src="~/Content/images/logo.png" width="100" />
                                    </div>
                                    <div class="profile-info">
                                        <p>
                                            @Html.TextBox("FullName", User.Identity.Name.ToString(), new { @readonly = "readonly", @disabled = "disabled" })
                                        </p>
                                    </div>
                                </div>
                            </div>


                        </div>
                        <div class="dropdown-divider"></div>
                        <div class="row">
                            <div class="col-sm-3">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label col-md-2" })
                                    @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control" } })
                                    @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
                                </div>
                            </div>

                            <div class="col-sm-3">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.MiddleName, htmlAttributes: new { @class = "control-label col-md-2" })
                                    @Html.EditorFor(model => model.MiddleName, new { htmlAttributes = new { @class = "form-control" } })
                                    @Html.ValidationMessageFor(model => model.MiddleName, "", new { @class = "text-danger" })
                                </div>
                            </div>

                            <div class="col-sm-3">
                                <div class="form-group">

                                    @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label col-md-2" })
                                    @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } })
                                    @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })
                                </div>
                            </div>
                            <div class="col-sm-3">
                                <div class="form-group">
                                    @Html.LabelFor(model => model.Gender, htmlAttributes: new { @class = "control-label col-md-2" })

                                    @Html.DropDownListFor(x => Model.Gender, new SelectList(Model.Genders, "Value", "Text"), htmlAttributes: new { @class = "form-control", id = "Gender" })

                                </div>
                            </div>

                        </div>


                    }

1 Ответ

0 голосов
/ 06 июня 2019

если ваш View предназначен для UpdatePatient, то вы хотите создать модель типа RegisterViewModel и добавить к ней Genders, а затем передать эту модель в View, например:


        public ActionResult UpdatePatient()
        {
            List<SelectListItem> GenderList = GetGenders();
            return View(new RegisterViewModel
            {
                FirstName = "",
                MiddleName = "middle",
                LastName = "last",
                Genres = GenderList
            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...