DropDownList для возврата нулевого списка на пост назад - PullRequest
1 голос
/ 22 января 2020

Когда я публикую обратно свой список в моем DropDownList, выбранный элемент установлен, но исходный список имеет значение NULL. Если это так, я могу просто пополнить список, но я хотел бы знать, что я делаю что-то не так. У меня нет этой проблемы с другими html помощниками.

Модель

using System.Collections.Generic;
using System.Web.Mvc;

namespace Test.Models
{
    public class Test_Model
    {
        public List<SelectListItem> lstThing { get; set; }  
        public string strThing { get; set; }
    }
}

Вид

@using Test.Models

@model Test_Model

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
    @Html.DropDownListFor(model => model.strThing, Model.lstThing)

    <input type="submit" value="submit" />
}

Контроллер

using System;
using System.Collections.Generic;
using System.Web.Mvc;
using Test.Models;

namespace Test.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var model = new Test_Model();
            model.lstThing = new List<SelectListItem>();
            model.lstThing.Add(new SelectListItem { Text = "aaa", Value = "aaa" });
            model.lstThing.Add(new SelectListItem { Text = "bbb", Value = "bbb" });
            return View(model);
        }

        [HttpPost]
        public ActionResult Index(Test_Model model)
        {
            return View(model);
        }

    }
}

1 Ответ

2 голосов
/ 22 января 2020

Вы передаете новый экземпляр модели в свой пост обратно.

 [HttpPost]
 public ActionResult Index(Test_Model model)
    {
       model.lstThing = new List<SelectListItem>();
       model.lstThing.Add(new SelectListItem { Text = "aaa", Value = "aaa" });
       model.lstThing.Add(new SelectListItem { Text = "bbb", Value = "bbb" });
       return View(model);
    }

Вам необходимо добавить обратно элементы SelectListItem

...