TextBoxFor模型在循环中动态递增

时间:2012-11-08 04:20:04

标签: c# asp.net asp.net-mvc-3 loops razor

我正在构建一个用于解决问题的Web应用程序。加载工作日时,它会显示一个FORM,其中包含每个练习的一系列文本框,用于记录每组的重复次数和重量。每次练习都需要不同数量的练习。

我创建了一个包含两个对象类型的类,一个来自ExerciseReference实体类/数据库表的练习列表,以及一个实体类,用于记录用户输入表单并提交的数据。

我的模型看起来像这样:

public class ExerciseListModel
{
    public List<ExerciseRef> exercises { get; set; }
    public ExerciseREC recordedExercises { get; set; }
}

为每个练习构建Reps和Weights文本框时,我的Razor HTML看起来与此类似:

 @foreach(ExerciseRef item in Model.exercises)
        {
            <div class="editor-label">
            <h3>@item.Name.ToString()</h3>
            </div>
            <p>@item.Description.ToString()</p>

                for (int i = 0; i < item.NumberOfSets; i++)
                {                        
                   <text>Set #: </text> @(i + 1)<br />
                   <text>REPS: </text> @Html.TextBoxFor(m => m.recordedExercises.Set1Reps)<br />
                   <text>WEIGHT: </text> @Html.TextBoxFor(m => m.recordedExercises.Set1Weight) <br /><br />

                }

        }

基本上,这是foreach循环中的for循环。 foreach循环构建所有练习的HTML列表,而for循环构建代表和权重的文本框。

我需要以下行中Set1Reps中的数字:

 @Html.TextBoxFor(m => m.recordedExercises.Set1Reps)

动态并随循环增加。我需要它为Set 1设置Set1Reps,并为Set 2改为Set2Reps,依此类推。

我知道如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我会将您的数据模型更改为包含集合和代表作为recordedExcercises属性上的集合。然后,您可以迭代它们,就像迭代整个练习集一样。