gpt4 book ai didi

c# - 对象中对象的 MVC 绑定(bind)列表

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

我正在尝试动态构建一个需要在提交表单时绑定(bind)到 ViewModel 的表。

第一项是表单提交到的操作。然后是父 ViewModel,然后是子 ViewModel。下面是两个文本字段,代表我需要绑定(bind)的数据。

当我提交表单时,页面中的所有其他字段都绑定(bind)到它们各自的属性,但 ProgramViewModels 的复杂对象不是。

我错过了什么?

public ActionResult Add(AddEntityViewModel viewModel){
Code that does something
}

public class AddEntityViewModel
{
public IList<int> Counties { get; set; }
public IList<ProgramViewModel> Programs { get; set; }
public IList<int> Regions { get; set; }
public string EntityName { get; set; }

public bool IsValid()
{
if (string.IsNullOrEmpty(EntityName))
return false;

if (Counties == null || Counties.Count == 0)
return false;

if (Programs == null || Programs.Count == 0)
return false;

if (Regions == null || Regions.Count == 0)
return false;

return true;
}
}

public class ProgramViewModel
{
public int Id;
public string SystemId;
}

<input type="hidden" id="Programs[0]__Id" name="Programs[0].Id" data-programid="3" value="3">
<input type="text" id="Programs[0]__SystemId" name="Programs[0].SystemId" style="width:100%" maxlength="50">

更新:

在 adiga 的回答后将字段更改为属性。但这也没有解决问题。

public class ProgramViewModel
{
public int Id { get; set; }
public string SystemId { get; set; }
}

最佳答案

您的 ProgramViewModel 包含字段。将它们更改为属性。

public class ProgramViewModel
{
public int Id { get; set; }
public string SystemId { get; set; }
}

DefaultModelBinder 使用反射并仅绑定(bind)属性而不绑定(bind)字段。

关于c# - 对象中对象的 MVC 绑定(bind)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46672145/

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