编程语言
首页 > 编程语言> > c# – MVL列表在回发时为空

c# – MVL列表在回发时为空

作者:互联网

我的控制器使用一个列表填充我的模型,该列表包含出现在我的视图中的DropDownList中的字符串.当视图回发到我的Controller时,该列表突然变为空.为什么它为null,我创建的字符串列表发生了什么?

列表已正确填充并显示在视图中.表格元素的其余部分正确地回发.例如,selectedName具有用户单击的任何名称.唯一没有回发的是nameList.

这是我模型的相关部分,

public class MyModel
{
    [Display(Name = "Selected")]
    public string selectedName{ get; set; }
    [Display(Name = "Names")]
    public List<string> nameList{ get; set; }
}

我的控制器的相关Get和Post部分,

public class MyController: Controller
{
    [HttpGet]
    public ActionResult Index()
    {
        List<string> nameList= getNames();
        MyModel model = new MyModel()
        model.nameList= nameList;
        // Now, model.nameList has a bunch of stuff in it
        return View(model); 
    }

    [HttpPost]
    public ActionResult Index(MyModel model)
    {
        if(model.nameList== null)
        {
            cry();
            postOnStackOverflow();
        }
        return View(model); 
    }
}

和我的View的相关部分(封装在表单内).

<p>
    @Html.LabelFor(c => c.nameList):
@Html.DropDownListFor(c => c.selectedName, new SelectList(Model.nameList), new { onchange = "this.form.submit();" })
</p>

解决方法:

发布表单时,仅发布下拉列表的值.我假设您的控件在表单上.

我不确定您为什么要总是返回到您发布的视图,但是您需要重新填充列表:

    [HttpPost]
    public ActionResult Index(MyModel model)
    {
         List<string> names = getNames();

        model.nameList = names;
        return View(model); 
    }

标签:c,asp-net-mvc,html-dropdownlistfor
来源: https://codeday.me/bug/20190629/1323431.html