Asp.net核心MVC - 在控制器操作中向控制器IEnumerable模型发布的表单为空

时间:2018-05-02 21:34:14

标签: c# asp.net-core-mvc asp.net-core-2.0

当我尝试将IEnumerable从razor视图发布到Controllor操作方法时,我遇到了问题。如果我使用List,结果也是一样的。 我也在评论中发布了我的控制器动作方法。在我的控制器动作方法中,我得到的列表是空的。

这是我的观点:

df.DrankCoffee.replace({'no':1,'forgot':0,'yes':0}).groupby((df.DrankCoffee=='yes').cumsum()).cumsum()
Out[111]: 
0     1
1     2
2     2
3     0
4     1
5     2
6     3
7     4
8     5
9     0
10    1
Name: DrankCoffee, dtype: int64

这是我的控制器:

@model IEnumerable<Subject>
<form asp-action="AddNewSubjects" asp-controller="Teacher" method="post" role="form" class="form-horizontal">
    <table class="table">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Number of class</th>
                <th>Level</th>
            </tr>
        </thead>
        <tbody>
            @if (Model != null)
            {

    var item = Model.ToList();
    @for(int i=0;i<Model.Count();i++)
                {
            <tr>
                <td>@item[i].ID</td>
                <td>@item[i].Name</td>
                <td>@item[i].ClassNumber</td>
                <td>@item[i].Level</td>

            </tr>

                }
            }
        </tbody>
    </table>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-5">
            <input type="submit" class="btn btn-primary" value="Save all subjects" />
        </div>
    </div>
</form>

1 个答案:

答案 0 :(得分:0)

我不知道你在这里尝试做什么。除了提交按钮之外,您的表单没有任何输入元素。当然,你没有看到任何回复的内容。

@model IEnumerable<Subject>

<form>
    ...
    <tbody>
        @for(int i = 0; i < Model.Count(); i++)
        {
            <tr>
                <td>
                    <input type="hidden" asp-for="Model[i].ID" />
                </td>
                <td>
                    <input type="text" asp-for="Model[i].Name" />
                </td>
                ...
            </tr>
        }
    </tbody>
    ...
</form>

为什么?

  • 为什么要将IEnumerable转换为名为item的列表?为什么不直接列举你的科目呢?
  • 为什么不创建一组名为ViewModel的不同模型并将其传递给View,而不是直接在View上使用数据库中的模型?