将选定的复选框值保存到数据库列

时间:2019-07-01 18:47:37

标签: javascript c# asp.net-mvc vue.js

我需要通过API调用将多个复选框中的字符串值保存到数据库中。如何在数据库模型中对此进行正确建模,以便可以将字符串值保存到数据库表的一列中。我使用的是ASP.NET MVC,前端使用的是vue.js。

我想将代表多个复选框中的值的字符串数组传递给API端点。我将其表示为数据库模型中的字符串列表,并且还希望将字符串值列表另存为表列中的字符串。(注:不确定这是否是一种好方法,因为我必须能够检索稍后从数据库中选择此列表)。

 public class TempAccountOpeningRequest
    {
        [Key]
        public int Id { get; set; }

        [Required(ErrorMessage = "First Name is required")]
        [JsonProperty("first_name")]
        public string FirstName { get; set; }

        [Required(ErrorMessage = "Last Name is required")]
        [JsonProperty("last_name")]
        public string LastName { get; set; }      

        [JsonProperty("typesSelected")]
        public List<string> TypesSelected { get; set; }

    }

我希望能够将多个复选框中的值传递给API,然后API将数据保存到我的数据库表中

1 个答案:

答案 0 :(得分:0)

您可以将其保存在一列中,并用逗号分隔:

将模型更改为:

public class TempAccountOpeningRequest
{
    ...
    [JsonProperty("typesSelected")]
    public string TypesSelected { get; set; }
}

您的SaveDTO可能像这样:(TypesSelected将从vue.js作为数组发送)

public class SaveTempAccountOpeningRequestDTO
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public List<string> TypesSelected { get; set; }
}

您的API获取数据,然后将其转换为数组并保存在数据库中:

public bool Save(SaveTempAccountOpeningRequestDTO dto)
{
    ...
    string joinedTypesSelected = string.Join(',', dto.TypesSelected);
    ...
}

当然,当您获取数据时,应将其更改为如下所示的列表:

yourResult.Select(x=>x.TypesSelected.Split(',')).ToList();