Asp.net core NET核心:查看要编辑的多个项目的网格

Asp.net core NET核心:查看要编辑的多个项目的网格,asp.net-core,Asp.net Core,我正在尝试构建一个视图,其中来自表(机器)的记录可以上传,并且每个记录都可以在视图中编辑 这是我的获取方法: public async Task<IActionResult> Test() { return View(await _context.Machines.Include(t => t.MachineTypes).Include(p => p.Suppliers).AsNoTracking().ToListAsync())

我正在尝试构建一个视图,其中来自表(机器)的记录可以上传,并且每个记录都可以在视图中编辑

这是我的获取方法:

public async Task<IActionResult> Test()
        {

            return View(await _context.Machines.Include(t => t.MachineTypes).Include(p => p.Suppliers).AsNoTracking().ToListAsync());
        }
旁注:Post方法尚未定义,因此我现在使用任何名称

然后是读取列表中每个元素的迭代:

    @Html.ValidationSummary(true)
    @for(int i = 0; i < Model.Count() ; i++)
我不知道为什么我需要使用HiddenFor,我在论坛的另一个例子中看到了它。 uni回答:这是向控制器发送值的多种方法之一。

问题[已回答]:还有,这一部分

@Html.HiddenFor(modelItem => modelItem.Machine[i].Id) 
uni的回答:不需要包括“机器”,与之前一样

视图的延续

对于迭代部分,因为“机器”不需要包括在内

[新]问题:我应该如何从机器表中调用所需的项目

我有这个:

    @for(int i = 0; i < Model.Count() ; i++)
    { 
        <tr>
            <td>
            @Html.HiddenFor(modelItem => i.Id)
            @Html.DisplayNameFor(modelItem => model.MchName)
            </td>
        </tr>

     }
for(int i=0;ii.Id) @DisplayNameFor(modelItem=>model.MchName) } 这两个都是错误的,但我试图弄清楚如何在迭代中显示项目。我想知道,既然我使用的是IEnumerable,最好使用@foreach而不是for()


谢谢

问题:使用IEnumerable是否正确

回答:


问题:在这一部分中,我不确定“Model.Machine.Count()”是否正确,我得到的错误是:IEnumerable不包含Machine的定义。如果我这样说就足够了吗?:@for(int I=0;I 回答:您已经有一组机器
(IEnumerable)
,它们存储在您的模型中,因此model.Count()是正确的方法,因为每个机器模型都没有子机器对象


问题:@Html.HiddenFor(modeleItem=>modeleItem.Machine[i].Id)我不知道为什么需要使用HiddenFor,我在论坛的另一个示例中看到了它

回答:当您执行HTTP post时,您有许多方法将值发送到控制器操作。隐藏字段是实现这一点的一种方法。在这种情况下,您将发送机器id作为表单提交的一部分


问题:@Html.HiddenFor(modeleItem=>modeleItem.Machine[i].Id)显示相同的错误:IEnumerable不包含Machine的定义。我想我应该提到那张桌子

答案:这个问题的答案与我前面提到的关于for循环中Count()调用的答案相同


希望这有帮助

谢谢大家!!毫无疑问,在这之后,我们仍在学习如何在.NETCore上实现这一点。添加了以下疑问,但我会继续在谷歌搜索@univNp很乐意帮忙!如果它解决了你的问题,请将答案向上投票:)为了回答你的新问题,我同意你绝对应该使用foreach而不是for loop,我尝试过,但我还没有15个声誉。一旦我达到目标就会回来做!好啊快乐编程,如果您有任何其他问题,请告诉我:)
    @for(int i = 0; i < Model.Count() ; i++)
    { 
        <tr>
            <td>
                @Html.HiddenFor(modelItem => modelItem.Machine[i].Id)
                @Html.DisplayNameFor(model => model.MchName)
            </td>
        </tr>
     }
    @Html.HiddenFor(modelItem => modelItem.Machine[i].Id)
@Html.HiddenFor(modelItem => modelItem.Machine[i].Id) 
    @for(int i = 0; i < Model.Count() ; i++)
    { 
        <tr>
            <td>
            @Html.HiddenFor(modelItem => i.Id)
            @Html.DisplayNameFor(modelItem => model.MchName)
            </td>
        </tr>

     }