gpt4 book ai didi

c# - 回发时 MVC 列表为空

转载 作者:行者123 更新时间:2023-11-30 12:09:34 27 4
gpt4 key购买 nike

我的 Controller 用一个列表填充我的模型,该列表包含出现在我 View 中的 DropDownList 中的 strings。当 View 回发到我的 Controller 时,该列表突然为 null。为什么它为空,我创建的字符串列表发生了什么?

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

这是我模型的相关部分,

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

我的 Controller 的相关获取和发布部分,

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>

最佳答案

当您发布表单时,只会发布下拉列表的值。我假设您的相关控件位于表单上。

我不确定您为什么要始终返回到您发布的 View ,但您需要重新填充列表:

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

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

关于c# - 回发时 MVC 列表为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com