【问题标题】:Input Bootstrap Multidate Value to Several SQL Records将 Bootstrap 多日期值输入到多个 SQL 记录
【发布时间】:2016-05-13 10:00:20
【问题描述】:

我目前正在构建 ASP.NET C# MVC 应用程序。我打算在 html 表单中使用 bootstrap datepicker multidate 让用户选择几个日期(假期)。问题是日期选择器在一个输入字段中写入多个日期并用逗号分隔(例如: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; }

}

还有我发布到数据库的控制器:

[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");
    }

还有我使用 datepicker 的 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()
                });

感谢您的帮助,

【问题讨论】:

  • 你必须用逗号分割leave.B.LvDate,然后做一个foreach循环

标签: c# asp.net asp.net-mvc bootstrap-datepicker


【解决方案1】:

如果您只想要 LeaveApps 表中的一条记录但有多个日期,我建议您为 LeavAppDates 创建一个单独的表,该表将通过 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;

【讨论】:

  • 非常感谢,但我又遇到了问题,因为事实证明我的 leave.b.LvDatedata 类型是 datetime,因为我在 sql server 中的 LvDate 列也是 datetime,并且 datepicker 正在将输入保存在字符串 i猜测?你知道如何解决这个问题吗?
  • 您需要将字符串转换为日期时间。看看这个链接stackoverflow.com/questions/15738608/…。如果你还有问题,请告诉我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多