gpt4 book ai didi

asp.net-mvc - MVC - 编辑对象列表

转载 作者:行者123 更新时间:2023-12-04 01:49:39 27 4
gpt4 key购买 nike

我在 MVC 中有以下类布局:

public class ReportModel 
{
List<SomeItem> items;
string value;
string anotherValue;
}

现在我在这种类型的 MVC 中创建了一个强类型 View ,并制作可编辑的文本字段来编辑每个值,并使用 foreach 循环来填充文本字段以编辑某个项目列表中的项目。

当我提交给 httppost 方法时,奇异值在 reportmodel 对象中恢复正常,但列表没有在对象中返回。这应该怎么做?

当我说 httppost 时,我指的是 MVC 发回的方法
[HttpPost]
public ActionResult EditReport(ReportModel report)
{
// Save the report in here after the update on the UI side
}

查看用于发布某个项目列表的代码
if (Model.items != null && Model.items.Count > 0)
{
for (int i = 0; i < Model.items.Count; i++)
{
<div class="editrow">
<div class="edititem">
<div class="editor-label">
@Html.LabelFor(m => m.items.ElementAt(i).propertyOne)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.items.ElementAt(i).propertyOne)
@Html.ValidationMessageFor(m => m.items.ElementAt(i).propertyOne)
</div>
</div>
<div class="edititem">
<div class="editor-label">
@Html.LabelFor(m => m.items.ElementAt(i).propertyTwo)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.items.ElementAt(i).propertyTwo)
@Html.ValidationMessageFor(m => m.items.ElementAt(i).propertyTwo)
</div>
</div>
<div class="edititem">
<div class="editor-label">
@Html.LabelFor(m => m.items.ElementAt(i).propertyThree)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.items.ElementAt(i).propertyThree)
@Html.ValidationMessageFor(m => m.items.ElementAt(i).propertyThree)
</div>
</div>
</div>
}
}

最佳答案

不要使用 ElementAt(1)在您的 lambda 表达式中 => 这会破坏您的输入字段名称。请阅读 Kirill 建议您的博客文章。

所以你可以使用索引访问:

for (int i = 0; i < Model.items.Count; i++)
{
<div class="editrow">
<div class="edititem">
<div class="editor-label">
@Html.LabelFor(m => m.items[i].propertyOne)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.items[i].propertyOne)
@Html.ValidationMessageFor(m => m.items[i].propertyOne)
</div>
</div>
<div class="edititem">
<div class="editor-label">
@Html.LabelFor(m => m.items[i].propertyTwo)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.items[i].propertyTwo)
@Html.ValidationMessageFor(m => m.items[i].propertyTwo)
</div>
</div>
<div class="edititem">
<div class="editor-label">
@Html.LabelFor(m => m.items[i].propertyThree)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.items[i].propertyThree)
@Html.ValidationMessageFor(m => m.items[i].propertyThree)
</div>
</div>
</div>
}

当然,为了让索引器访问集合,这假设您的 items属性声明为 List<SomeItem>SomeItem[] .如果是 IEnumerable<SomeItem>它不会工作。因此,只需在您的 View 模型上更改此属性的类型。

关于asp.net-mvc - MVC - 编辑对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696988/

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