将 Bootstrap 多日期值输入多个 SQL 记录

Input Bootstrap Multidate Value to Several SQL Records

我目前正在构建 ASP.NET C# MVC 应用程序。我打算在 html 表单中使用 bootstrap datepicker multidate 来让用户 select 多个日期(假期)。问题是日期选择器在一个输入字段中写入多个日期并以逗号分隔(例如:2016-10-10、2016-11-10、2016-13-10)。我想知道如何为数据库中的一条记录编写这些日期,以及像这样重复输入的其他输入形式(姓名、地址等):

这是我的模型:

public class LeaveApp
{

    [Key]
    public int LvId { get; set; }
    public string LvAppId { get; set; }
    public int EmpId { get; set; }
    public DateTime LvDate { get; set; }
    public string LvPeriod { get; set; }
    public string LvDesc { get; set; }

}

我的控制器 post 进入数据库:

[HttpPost]
    public ActionResult Create(/*[Bind(Include = "EmpId,LvAppId,LvPeriod,LvStartDate,LvEndDate,LvDesc,LvCount")]*/ LeaveApplicationViewModels leave)
    {
        if (leave != null)
        {
            var a = leave.B.LvAppId;
            var b = leave.B.EmpId;
            var c = leave.B.LvDate.ToString("yyyy-MM-dd");
            var e = leave.B.LvPeriod;
            var f = leave.B.LvDesc;
            //Value.ToString("yyyy-MM-dd HH:mm:ss")
            ViewBag.RowsAffected = db.Database.ExecuteSqlCommand("insert into LeaveApps (LvAppId, EmpId, LvDate,  LvPeriod,LvDesc)"+
                                    " values ({0}, {1},{2},{3}, {4})", 
                                    "LV0022",b,c, e,f);
        }

        return RedirectToAction("Index");
    }

还有我的 html 使用日期选择器的表单:

<div class='input-group date' id="datetimepicker">
            @Html.TextBoxFor(model => model.B.LvDate, new { Id = "lv_start_date", @Class = "form-control input-sm" })

            <span class="input-group-addon">
                <span class="glyphicon glyphicon-calendar"></span>
            </span>
        </div>

        <script type="text/javascript">
            $(function () {

                $('#datetimepicker').datepicker({
                    format: "dd/mm/yyyy",
                    multidate: 5,
                    maxViewMode: 1,
                    multidateSeparator: ",",
                    orientation: "bottom left",
                    keyboardNavigation: false,
                    clearBtn: true,
                    daysOfWeekDisabled: "0,6",
                    startDate: new Date()
                });

谢谢你的帮助,

如果您只想在 LeaveApps table 中记录一条记录,但有多个日期,我建议您为 LeavAppDates 创建一个单独的 Table,它将 link 按 EmpId。

然后将员工数据插入到休假应用程序中,在日期列表上进行逗号分隔,然后循环遍历日期并将具有该 EmpId 的日期插入到新的 LeavsAppDates 中。

否则

我首先将从日期选择器中获取的字符串转换为逗号分隔列表

var datePickerDateList =leave.B.LvDate.Split(',').Select(i => DateTime.Parse(i)).ToList();

下一步将是像 Felipe Deguch 提到的那样遍历列表

var rowsAffected = 0;

foreach(var date in datePickerDateList)
{
        var a = leave.B.LvAppId;
        var b = leave.B.EmpId;
        var c = date.ToString("yyyy-MM-dd");
        var e = leave.B.LvPeriod;
        var f = leave.B.LvDesc;
        //Value.ToString("yyyy-MM-dd HH:mm:ss")
        db.Database.ExecuteSqlCommand("insert into LeaveApps (LvAppId, EmpId, LvDate,  LvPeriod,LvDesc)"+
                                " values ({0}, {1},{2},{3}, {4})", 
                                "LV0022",b,c, e,f);
        rowsAffected++;
}

ViewBag.RowsAffected = rowsAffected;