【问题标题】:Insert checkbox values to database separated by commas将复选框值插入以逗号分隔的数据库
【发布时间】:2016-01-02 05:40:43
【问题描述】:

在我的 .cshtml 文件中,我有这个带有复选框的表单:

<div class="checkbox">
    <label>
        <input type="checkbox" value="Clothing" name="Child1GiftTypeNeed" checked>
            Clothing
    </label>
</div>
<div class="checkbox">
    <label>
        <input type="checkbox" value="Shoes" name="Child1GiftTypeNeed">
            Shoes
    </label>
</div>
<div class="checkbox">
    <label>
        <input type="checkbox" value="Coat/Jacket" name="Child1GiftTypeNeed">
            Coat/Jacket
    </label>
</div>
<div class="checkbox">
    <label>
        <input type="checkbox" value="Books" name="Child1GiftTypeNeed">
        Books
    </label>
</div>

如何将这些复选框的值插入到以逗号分隔的单个数据库列中?

(我是一个全新的 C# 学习者)

这是我从代码隐藏中插入的内容:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Include = "Id,Child1GiftTypeNeed")] HGProgram hgProgram)
{
    if (ModelState.IsValid)
    {
        //Save to my database
        db.HGPrograms.Add(hgProgram);
        db.SaveChanges();
    }
}

【问题讨论】:

  • 能否请您说明问题?

标签: c# asp.net-mvc model-view-controller checkbox


【解决方案1】:

您需要一个视图模型。这样,您就可以将列表映射到/从列表映射到字符串:

public class HGProgramViewModel
{
    // other HGProgram properties you want to edit

    public string Child1GiftTypeNeed { get; set; }

    public List<string> Child1GiftTypeNeedList
    {
        get
        {
            !string.IsNullOrWhiteSpace(Child1GiftTypeNeed)
                ? Child1GiftTypeNeed.Split(',').ToList()
                : new List<string>();
        }
        set
        {
            Child1GiftTypeNeed = value != null
                ? string.Join(",", value)
                : null;
        }
    }
}

然后,在您看来,您只需将字段命名为 Child1GiftTypeNeedList[]。无论如何,索引语法[] 是必需的,因为您现在拥有它,只会发布一个复选框值(页面上的最后一个复选框)。

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多