【问题标题】:How to setup my checkboxes in asp.net mvc? Do I use Checkbox or CheckboxFor?如何在 asp.net mvc 中设置我的复选框?我使用 Checkbox 还是 CheckboxFor?
【发布时间】:2011-12-19 17:19:39
【问题描述】:

我有这种情况。我有 10 个需要生成的复选框(此列表可能会增长并且来自数据库)。

现在用户可能只有 10 个中的 3 个。我希望始终向用户显示所有 10 个复选框,但只检查他们拥有的复选框。

我不确定我的视图模型和页面应该是什么样子?我不确定要使用哪个 html 助手。如果我需要数据库中每个值的属性(布尔值)来显示它们具有的值。

它是我的数据库,我没有一点价值来显示他们是否拥有它。我有一个多对多的关系。一个用户可以有很多功能,一个功能可以有很多用户。

【问题讨论】:

  • 老兄!太多的问题和想法。你的问题是什么?

标签: asp.net-mvc asp.net-mvc-3 nhibernate


【解决方案1】:

构建视图模型来描述您的 UserFeature 对象。然后,您可以使用编辑器模板来显示复选框。

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)

【讨论】:

    猜你喜欢
    • 2016-09-13
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    相关资源
    最近更新 更多