传递多个下拉列表,每个下拉列表都在MVC4中为控制器选择了多个值

时间:2013-06-26 06:14:05

标签: asp.net-mvc razor

我有动态生成的锻炼和锻炼列表。锻炼是所有锻炼的共同点。 我需要为每次训练传递多个练习曲。 我需要传递这样的数据。对于exercise1,可能有3个练习。对于exercise2,可能有2个练习,依此类推。

查看是:

@using (Html.BeginForm("AddWorkoutSessionExcercises", "Trainer", FormMethod.Post))
 {
   foreach (var workoutType in Model.WorkoutTypes)
    {
    <div><span>@workoutType.WorkoutTypeName</span><span class="MandatoryStar">*</span>         </div>

    <div >
        @Html.DropDownList("ExcerciseDDFor", Model.Excercises, null, new {  multiple = "multiple"})
    </div>
}

我的模特就是这样。回顾锻炼和锻炼的清单。

public class AddSessionExcerciseModel
{

    public AddSessionExcerciseModel()
    {
        Excercises = Utility.GetAllExcercises();
        WorkoutTypes = Utility.GetWorkoutTypes();
    }
    public List<SelectListItem> Excercises { get; set; }
    public List<tblWorkoutType> WorkoutTypes { get; set; }
 }

我的控制器是:

public ActionResult AddWorkoutSessionExcercises(Guid[] ExcerciseDDFor)
{
// code 
}

这是为所有训练传递了所有练习的数组,我无法区分这个练习所属的锻炼。

有没有办法解决这个问题。或者我会为所有锻炼得到Excercises阵列。喜欢:

exercise1 - &gt;数组[2 excercises]

exercise2 - &gt;数组[3 excercises]

exercise3 - &gt;数组[1 excercises]

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你需要改变你的模型。现在,你有一个锻炼列表,但只有一个练习列表,所以没有办法告诉哪个锻炼属于哪个锻炼。

恕我直言,tblWorkoutType每个都应包含练习列表。

在你的行动中,你应该期待一个锻炼列表,每个锻炼都有一个选定的练习列表

public ActionResult AddWorkoutSessionExcercises(List<tblWorkoutType> workouts)
{
// code 
}