Asp.net mvc 3 如何在视图中显示布尔值并将值保存到DB

Asp.net mvc 3 如何在视图中显示布尔值并将值保存到DB,asp.net-mvc-3,Asp.net Mvc 3,我有一个具有位值的表(真/假) 表定义: CharacterID int isActive bit UserId uniqueidentifier 我有两个问题: 如何在下拉列表中的“编辑”视图中显示现有选定选项 我需要在数据库中将值(是/否)保存为true和false 以下是我迄今为止所做的尝试: <div class="editor-label"> @Html.LabelFor(model => model.IsActive) </div>

我有一个具有位值的表(真/假)

表定义:

CharacterID int 
isActive    bit 
UserId  uniqueidentifier
我有两个问题:

  • 如何在下拉列表中的“编辑”视图中显示现有选定选项
  • 我需要在数据库中将值(是/否)保存为true和false
  • 以下是我迄今为止所做的尝试:

    <div class="editor-label">
        @Html.LabelFor(model => model.IsActive)
    </div>
    <div class="editor-field">
            @Html.DropDownList("", new SelectListItem[] { new SelectListItem() { Text = "Yes", Value = "true", Selected = Model.IsActive }, new SelectListItem() { Text = "No", Value = "false", Selected = !Model.IsActive }})
    </div>
    
    
    @LabelFor(model=>model.IsActive)
    @Html.DropDownList(“,new SelectListItem[]{new SelectListItem(){Text=“Yes”,Value=“true”,Selected=Model.IsActive},new SelectListItem(){Text=“No”,Value=“false”,Selected=!Model.IsActive})
    
    假设model.IsActive被声明为
    bool

    对用户来说,使用复选框不是更直观,需要更少的点击吗? 在这种情况下,您可以使用:

    @Html.EditorFor(model => model.IsActive)
    
    如果您确实需要下拉列表,那么这可能会提供一个有效的实现:

    根据你的情况,我认为:

     @Html.DropDownListFor(model => model.IsActive, new SelectList(new SelectListItem[] { new SelectListItem() { Text = "Yes", Value = "True" }, new SelectListItem() { Text = "No", Value = "False"}}, model.IsActive.ToString())
    
    现在,为了将其保存到数据库中,我必须知道您是否使用EF、L2S等。
    但是我想你已经在你的控制器中设置了一个动作来保存。在这种情况下,它可能已经接收到模型的一个实例作为参数。使用DropDownListFor而不是DropDownList,您的模型应该由MVC默认的
    ModelBinder
    自动绑定,并且您应该能够将其映射到您的数据库实体并存储它。

    要实现这一点,您需要为下拉列表和viewmodel属性设置一些东西

    1) 您的视图模型:

    public class MyModel
        {
            public MyModel()
            {            
                BoolSelectList = new List<SelectListItem>(); 
            }
    
            public int CharacterID { get; set; }
            public bool isActive   { get; set; }
            public Guid UserId  { get; set; }
            public IList<SelectListItem> BoolSelectList { get; set; }
        }
    
    3) 在你看来:

    @Html.LabelFor(model => model.isActive, "Is Active ")
    @Html.DropDownListFor(model => model.isActive, Model.BoolSelectList, model.IsActive.ToString())
    
    在Post操作中,IsActive的值应为真/假,具体取决于您的选择

    @Html.LabelFor(model => model.isActive, "Is Active ")
    @Html.DropDownListFor(model => model.isActive, Model.BoolSelectList, model.IsActive.ToString())