gpt4 book ai didi

c# - 传递给 Controller ​​时,具有复杂类型的 View 模型为空

转载 作者:太空狗 更新时间:2023-10-29 21:42:36 26 4
gpt4 key购买 nike

我正在尝试将具有复杂类型的 View 模型传递给我的 Controller 。我已经研究了关于这个主题的所有内容,但我仍然感到困惑。

问题:

当我点击我的提交按钮时, View 模型被传入但是 MacroInfo 属性列表为空。

更新索引 View 模型

public class UpdateIndexViewModel
{
//This view model will become larger later
public List<MacroInfo> MacrosToUpdate { get; set; }
}

宏观信息

public class MacroInfo
{
public bool IsSelected { get; set; }
public string FullPath { get; set; }
public string Id { get; set; }
public DateTime CreatedAt { get; set; }
}

Controller Action

[HttpPost]
public ActionResult Submit(UpdateIndexViewModel updateIndexViewModel)
{
//updateIndexViewModel.MacrosToUpdate is null ??
}

索引 View

@model EplanInterface.Core.ViewModels.UpdateIndexViewModel

@using (Html.BeginForm("Submit", "Update", FormMethod.Post))
{
<table style="width:100%" , class="table-bordered">
<thead>
<tr>
<th>#</th>
<th>Macro Path</th>
<th>Created At</th>
<th>Update</th>
</tr>
</thead>
@for (int i = 1; i < Model.MacrosToUpdate.Count; i++)
{
<tr>
<td>@Html.TextBoxFor(m =>Model.MacrosToUpdate[i].FullPath)</td>
<td>@Html.TextBoxFor(m => Model.MacrosToUpdate[i].CreatedAt)</td>
<td>@Html.CheckBoxFor(b => Model.MacrosToUpdate[i].IsSelected)</td>
</tr>
}
</table>
<input type="submit" class="btn btn-primary" value="Submit"/>
}

我尝试过的

我尝试更改传递给 List<MacroInfo> macrosToUpdate 的 Controller 操作属性, 但这样做时该属性仍然为 null。

Chrome 网络检测

enter image description here

最后的评论

我不确定我是否需要使用 AJAX post 来执行此操作,或者我的变量名是否格式不正确。我很确定这是一个我不理解的具有约束力的问题。

如果有人能指出正确的方向,我将不胜感激。

最佳答案

您的模板的这一部分有点错误。

@for (int i = 1; i < Model.MacrosToUpdate.Count; i++)
{
<tr>
<td>@Html.TextBoxFor(m =>Model.MacrosToUpdate[i].FullPath)</td>
<td>@Html.TextBoxFor(m => Model.MacrosToUpdate[i].CreatedAt)</td>
<td>@Html.CheckBoxFor(b => Model.MacrosToUpdate[i].IsSelected)</td>
</tr>
}

请更改为以下内容,然后重试。

@for (int i = 0; i < Model.MacrosToUpdate.Count; 
{
<tr>
<td>@i</td>
<td>@Html.TextBoxFor(m => m.MacrosToUpdate[i].FullPath)</td>
<td>@Html.TextBoxFor(m => m.MacrosToUpdate[i].CreatedAt)</td>
<td>@Html.CheckBoxFor(b => b.MacrosToUpdate[i].IsSelected)</td>
</tr>
}

首先,您从 1 开始循环,这是根本原因。由于缺少第零索引,模型绑定(bind)器无法正确绑定(bind)列表。

关于c# - 传递给 Controller ​​时,具有复杂类型的 View 模型为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57419345/

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