构建视图模型来描述您的 User 和 Feature 对象。然后,您可以使用编辑器模板来显示复选框。
public class UserFeatureViewModel
{
public string Name { get; set; }
public IEnumerable<FeatureViewModel> Features { get; set; }
}
// and the FeatureViewModel
public class FeatureViewModel
{
public string Name { get; set; }
public bool IsSelected { get; set; }
}
我说构建,所以在你的控制器、视图模型工厂或服务中这样做。 Feature 实例在这里是硬编码的,但你想从数据库中检索它们:
public class UserController : Controller
{
public ActionResult GetUser(string username)
{
var model = new UserFeatureViewModel
{
Name = username,
Features = new[]
{
new FeatureViewModel { Name = "Feature abc", IsSelected = true },
new FeatureViewModel { Name = "Feature def", IsSelected = false },
new FeatureViewModel { Name = "Feature xyz", IsSelected = true }
}
};
return View(model);
}
}
您可以使用带有UserFeatureViewModel参数的后续操作进行更新等。
最后,~/Views/User/EditorTemplates/FeatureViewModel.cshtml 中的编辑器模板将继承 FeatureViewModel 并使用 Html.CheckBoxFor 帮助器:
@model FeatureViewModel
<span>@Model.Name</span>
<span>@Html.CheckBoxFor(model => model.IsSelected)</span>
在您的表单(“父”视图)中,使用 EditorFor 助手来呈现部分
@Html.EditorFor(model => model.Features)