基本上,我有一个类,其中包含许多我想绑定到View的属性。当时打字很痛苦而且很难维护,所以想知道是否有更简便的方法。
当前型号:
public class test
{
public bool a { get; set; }
public bool b { get; set; }
public bool c { get; set; }
.
.
.
public bool x { get; set; }
public bool y { get; set; }
public bool z { get; set; }
}
当前控制器:
public ActionResult checkbox()
{
var viewModel = new test();
return View(viewModel);
}
当前视图:
@model Test.Program.test
@Html.CheckBoxFor(m => m.a)
@Html.LabelFor(m => m.a)
@Html.CheckBoxFor(m => m.b)
@Html.LabelFor(m => m.b)
@Html.CheckBoxFor(m => m.c)
@Html.LabelFor(m => m.c)
.
.
.
@Html.CheckBoxFor(m => m.x)
@Html.LabelFor(m => m.x)
@Html.CheckBoxFor(m => m.y)
@Html.LabelFor(m => m.y)
@Html.CheckBoxFor(m => m.z)
@Html.LabelFor(m => m.z)
“观看”部分是令我恐惧的部分。
编辑: 变量名仅作为示例。
Edit2: 最终,我根据Soufiane Tahiri的答案提出了一些愚蠢的骇客方法。
@foreach (var prop in test.GetType().GetProperties())
{
//here by adding the model in front will cause the model to bind with the response
@Html.CheckBox("test." + prop.Name)
@Html.Label(prop.Name)
}
答案 0 :(得分:3)
您可以使用反射并遍历模型属性:
@foreach (PropertyInfo prop in Model.GetType().GetProperties())
{
@Html.CheckBox(prop.Name)
@Html.Label(prop.Name)
}