MVC - 将控制后的类型复选框发送给控制器

时间:2014-02-04 23:11:22

标签: c# asp.net-mvc

我在模型中有两个类,见下文:

public class Action
{
    public int Id { get; set; }
    public bool HasChecked { get; set; }
}

public class Function
{
    public int Id { get; set; }
    public IEnumerable<Action> Actions { get; set; }
}

public class Permission
{
    public int Id { get; set; }
    public IEnumerable<Function> Functions { get; set; }
}

我想知道在chstml中使用CheckBox的最佳选择是什么,因为我有viewModel的Permission模型。是否可以将键入的集合返回给控制器? (Permisson有很多函数,有很多动作)

谢谢!

1 个答案:

答案 0 :(得分:1)

你绝对可以做到这一点。我相信模型需要是一个集合或列表或类似而不是IEnumerable(我可能会误解,但我只使用过列表)。

最简单的方法是在你的视图中,你迭代每个集合的东西,并为每个动作吐出一个复选框,如下所示:

@if (Model != null && Model.Functions != null)
{
   for (int i = 0; i < Model.Functions.Count; i++)
   {
      var fcn = Model.Functions[i];
      for (int j = 0; j < fcn.Actions.Count; j++)
      {
          @Html.CheckboxFor(model => Model.Functions[i].Actions[j].HasChecked);
          @Html.DisplayFor(model => fcn.Actions[j]);
      }
   }
 }

我已经做了一段时间,但我觉得这些方面的东西对你有用。如果你想自己用HTML做,你要注意的主要事情是输入的name属性看起来像name=Functions[0].Actions[1].HasChecked(对于第一个函数的第二个动作)模特)。