Выпадающий список формы MVC для

#asp.net-mvc

#asp.net-mvc

Вопрос:

На мой взгляд, я создаю форму, в которой пользователь выбирает страну из списка стран.Я получаю эту ошибку о том, что ссылка на объект не установлена для экземпляра объекта. Есть ли что-то, чего мне не хватает?

                     @Html.DropDownListFor(
                            x => x.selectedCountryId,
                            new SelectList(Model.ListOfCountries, "Value", "Text"),
                            "-- please select a Country--",
                            new { id = "ddlCountry", @class = "form-control" }
                    )
                    @Html.ValidationMessageFor(x => x.selectedCountryId)
 

Модель

  [Required]
        public int? selectedCountryId{ get; set; }
 

Ошибка

 System.NullReferenceException: 'Object reference not set to an instance of an object.'

System.Web.Mvc.WebViewPage<TModel>.Model.get returned null.
 

Метод действия

  public ActionResult Create(RequestFormViewModel model)
        {
            if (!ModelState.IsValid)
            {
                
            }

            return View(TemplateName, "");

    public ActionResult Index()
    {
        RequestFormViewModel  result = new RequestFormViewModel ();

        try
        {
            var FormInfo = GetFormInfo();

            if (FormInfo != null)
            {
                result = FormInfo;


            }
        }
        catch (Exception e)
        {

        }

        return View(TemplateName, result);
    }
 

Комментарии:

1. ваша модель равна null или ListOfCountries равно null это поможет вам c-sharpcorner.com/UploadFile/4d9083 /…

2. @mohamed-adelI Я получаю это при отправке формы, она отлично загружает элемент управления

3. пожалуйста, поделитесь своими методами действий

4. методы действия принимают объект модели

5. Уважаемый у вас должно быть 2 метода действий 1 для HttpGet и еще один для HttpPost пожалуйста, поделитесь методом действия HttpGet, чтобы помочь вам

Ответ №1:

Ваши методы действий должны быть такими, как показано ниже

 [HttpGet]
    public IActionResult Create()
    {
        //Way 1
        RequestFormViewModel model = new RequestFormViewModel();
        model.ListOfCountries = //Select from DB or Whatever
        return View(model);

        //Way 2
        ViewBag.ListOfCountries = //Select from DB or Whatever
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(RequestFormViewModel model)
    {
        if (ModelState.IsValid)
        {
        }
        return View(model);
    }
 

и для просмотра, если вы будете использовать способ 1, поэтому вам нужно добавить ListOfCountries как [NotMapped] в вашу модель или создать Dto для этого представления
для способа 2, вам нужно привязать выпадающий список из ViewBag вместо использования ListOfCountries в качестве свойства

Комментарии:

1. Я получаю HTTP-ошибку 404.0 — не найден с этой новой логикой

2. Не могли бы вы, пожалуйста, поделиться обновленным представлением и методами действий?