如何在视图中显示布尔值并将值保存到DB



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

表定义:

CharacterID int 
isActive    bit 
UserId  uniqueidentifier

我有两个问题:

  1. 如何在下拉菜单中的编辑视图中显示现有选定选项
  2. 我需要在数据库中将值(yes/No)保存为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>

假设该模型。IsActive声明为bool:

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

@Html.EditorFor(model => model.IsActive)

如果你真的想要下拉列表,那么这个SO可能会提供一个有效的实现:https://stackoverflow.com/a/4036922/1373170

应用于您的上下文,我相信它将是:

 @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自动绑定,并且您应该能够将其映射到数据库实体并存储它。

要实现这一点,您需要为下拉列表和视图模型属性设置几件事。

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; }
    }

2) 在控制器中,您需要将值分配给布尔值并列出

public MyModel viewmodel = new MyModel();
// Set other properties of viewmodel
// ....
// Set Drop-down List values
 viewModel.BoolSelectList = new SelectList(new SelectListItem[] { new SelectListItem()                   { Text = "Yes", Value = "True" }, new SelectListItem() { Text = "No", Value = "False"}};

3) 在您看来:

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

在Post操作中,IsActive的值应为True/False,具体取决于您的选择。

最新更新