gpt4 book ai didi

c# - 如何将复杂对象列表绑定(bind)到 mvc 中发布的 View 模型?

转载 作者:行者123 更新时间:2023-11-30 16:12:22 26 4
gpt4 key购买 nike

我正在 View 上创建 x 个下拉列表,并希望在发布时将所选值绑定(bind)回 View 模型。我看过斯科特的 post并尝试编写我的代码,但仍然无法正常工作。

我的 View 模型由两个项目组成。一个用于下拉列表的名称标签,一个用于选定的值。我需要选定的值,因为我需要预先选择下拉列表。

虚拟机

public class ColumnMapperVm
{
public string Column { get; set; }
public string SelectedValue { get; set; }
}

View 采用 View 模型列表。原因是因为我不知道在设计时我需要的下拉列表的数量。它因用户而异。

@model List<ColumnMapperVm>

@for (int i = 0; i < Model.Count; i++ )
{
<tr>
<td style="width: 50%;">
@Html.DisplayFor(m => m[i].Column)
</td>
<td>
@Html.DropDownList("SelectedValue", new SelectList(ViewBag.Columns, "StaticName", "DisplayName", Model[i].SelectedValue))
</td>
</tr>
}

我将选择列表放在 View 包中,因为我想保留我的 View 模型,并且我不选择列表不会被发回服务器。

这是我的 Controller

    [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult MapColumns(List<ColumnMapperVm> colmapper)
{
//colmapper is null
}

当然,我在 FormCollection 中获得了值,但是模型绑定(bind)器没有绑定(bind) View 模型,我想知道如何让它工作。

最佳答案

一个可能的原因可能是目前所有帖子上的下拉菜单都向请求添加了具有相同名称的值。要解决此问题,您可以使用 DropDownListFor:

@Html.DropDownListFor(m => m[i].SelectedValue, new SelectList(ViewBag.Columns, "StaticName", "DisplayName"))

这应确保所有下拉菜单在 HTML 标记中具有正确的名称。

关于c# - 如何将复杂对象列表绑定(bind)到 mvc 中发布的 View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111839/

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