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