gpt4 book ai didi

c# - 提交后 IEnumerable 属性为空

转载 作者:太空狗 更新时间:2023-10-30 01:06:11 24 4
gpt4 key购买 nike

我是 MVC 新手,理解起来有些困难。

为简单起见,我有一个“Person”对象,这个对象有一个名为“EmailaddressList”的 IEnumerable 属性。

我已经通过 Visual Studio 2012 生成了一个编辑页面。主要对象属性在编辑页面上生成,带有 Name 和 LastName 等文本框。

但是在我看来,IEnumerable 子对象列表中的电子邮件地址列表不是自动生成的。没关系,我已经使用每种类型的电子邮件地址的选项卡手动编写了该代码。

到目前为止一切顺利。

问题:当我在 HTTP-Post 方法中收到模型(人员对象)时,EmailAddressList 为空。为什么会这样,我传给view的时候不是null。列出电子邮件地址的选项卡处于局部 View 中。谁能给我一些提示,这是我在这里缺少的东西吗?*

查看代码

<div id="tabs">
<ul>
@foreach (var item in Model.EmailAddressList)
{
<li><a href="#@item.AddressType">@Html.Label(item.AddressType)</a></li>
}
</ul>
@foreach (var item in Model.EmailAddressList)
{
<div id="@item.AddressType">
<p>
@Html.TextBoxFor(s => item.EmailAddress, new { @class = "input-xxlarge" })
</p>
</div>
}
</div>

Controller (接收方式)这里 person.EmailAddressList 为 null

    [HttpPost]
public ActionResult Create(Person person)
{
if (ModelState.IsValid)
{
personRepository.InsertOrUpdate(person);
personRepository.Save();
return RedirectToAction("Index");
}
else
{
return View();
}
}

最佳答案

那是因为为了正确地索引您的字段(以便模型联编程序可以完成它的工作),您必须使用 for 循环。

首先,将您的 IEnumerable 更改为 List(这样我们就可以在 View 中使用索引器)。

然后将您的 foreach 更改为以下 for 循环:

@for (int i = 0; i < Model.EmailAddressList.Count; i++)
{
<div id="@Model.EmailAddressList[i].AddressType">
<p>
@Html.TextBoxFor(m => m.EmailAddressList[i].EmailAddress, new { @class = "input-xxlarge" })
</p>
</div>
}

关于c# - 提交后 IEnumerable 属性为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16170539/

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