将Razor textarea发回控制器

时间:2015-09-30 17:58:40

标签: c# asp.net-mvc asp.net-mvc-4 razor

我有一个ViewModel,它将两个不同对象列表包括在内:List<Review> ReviewsDayCommentary DayCommentaryReviewViewModel。在我看来,我将Reviews分组为Review.Country

var groupedReviews = Model.Reviews.GroupBy(item => item.Country)

在视图中,我遍历groupedReviews并为每个group构建一个HTML表格。我的目标是输出Review中的每个group,同时仍然绑定到模型以回发到控制器。这很重要,因为在视图中我有一个textarea字段,需要在POST操作期间将输入的文本传递回控制器。我知道这需要一个for循环而不是foreach来维护绑定。

我尝试了以下内容,它在视图中正确显示,但在FormMethod.Post期间未绑定到模型,例如在添加/编辑/删除控制器操作期间:

@using (Html.BeginForm("Save", "Review", FormMethod.Post))
{
    foreach (var group in groupedReviews)
    {
        <h6>@Html.Raw(group.Key)</h6>
        <table>
            <tr>
                <th style="text-align: center">
                    @Html.DisplayNameFor(model => model.Reviews[0].Ticker)
                </th>
            </tr>
            @for (var i = 0; i < group.Count(); i++)
            {
                <tr>
                    <td style="text-align: center">
                        @Html.TextAreaFor(model => group.ElementAt(i).Commentary)
                        @Html.HiddenFor(model => group.ElementAt(i).Commentary)
                    </td>
                </tr>
            }
        </table>
    }
}

我非常确定这里的问题是ElementAt(i),但是在迭代这种类型的分组集合时我可以使用什么呢?

我已经尝试将nameid属性分配给TextArea字段,如某些类似问题的答案中所建议的那样无效。

我一直在试图使用不同类型的循环并迭代不同的集合,但没有达到我想要的目标。

0 个答案:

没有答案