DropDownListFor 在 post 返回空列表

DropDownListFor returning a null list on post back

当我 post 在我的 DropDownListFor 中返回我的列表时,已设置所选项目但原始列表设置为空。如果这是设计使然,我可以重新填充列表,但我想知道我是否做错了什么。我与其他 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);
        }

    }
}

您正在 post 返回一个新的模型实例。

 [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 项目