首页 > 解决方案 > ASP CORE 动态更新 viewbag 日期标题

问题描述

您好,我是 asp 核心的新手,并负责制作日记应用程序。单击上一周按钮时,我遇到了表格的日期标题发生变化的问题。当按下按钮时,它应该显示上一周和下一周的日期。如果这是一个非常愚蠢的问题,或者我打算做完全错误的事情,请提前道歉。它适用于在页面加载时获取当前周日期,但无法在周之间切换。

如果需要更多信息,请告诉我.. 谢谢 :)

index.cshtml
<input type="submit" method="index" value="Previous Week" class="btn btn-light" onclick="location.href = '@Url.Action("Index", "Appointment",new {mon = ViewBag.monday, tues = ViewBag.tuesday, wed = ViewBag.wednesday, thurs = ViewBag.Thursday, fri = ViewBag.friday, sat = ViewBag.saturday,sun = ViewBag.sunday})'"/>

<td width="87" align="center" <font color="#0000A0" size="1">Monday <br /> @ViewBag.monday </font></td>
            <td width="87" align="center" <font color="#0000A0" size="1">Tuesday<br>@ViewBag.tuesday</font></td>
AppointmentController
[HttpGet]
        public IActionResult Index()
        {
            ViewBag.monday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Monday).ToString("dd-MM-yyyy");
            ViewBag.tuesday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Tuesday).ToString("dd-MM-yyyy");
            ViewBag.wednesday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Wednesday).ToString("dd-MM-yyyy");
            ViewBag.thursday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Thursday).ToString("dd-MM-yyyy");
            ViewBag.friday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Friday).ToString("dd-MM-yyyy");
            ViewBag.saturday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Saturday).ToString("dd-MM-yyyy");
            ViewBag.sunday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Sunday + 7).ToString("dd-MM-yyyy");
            return View();
        }

        [HttpPost]
        public IActionResult Index(DateTime mon, DateTime tues, DateTime wed, DateTime thurs, DateTime fri, DateTime Sat, DateTime sun)
        {
            //previous week
            ViewBag.Monday = mon.AddDays(-7);
            ViewBag.tuesday = tues.AddDays(-7);
            ViewBag.wednesday = wed.AddDays(-7);
            ViewBag.thursday = thurs.AddDays(-7);
            ViewBag.friday = fri.AddDays(-7);
            ViewBag.saturday = Sat.AddDays(-7);
            ViewBag.sunday = sun.AddDays(-7);
            return View();
        }

标签: datetimeasp.net-coreparameter-passingviewbag

解决方案


Managed to solve this problem within a single action but i think ill space it out separate like Johan as said.. Ill post my current solution below incase it helps anyone in the future!

<input type="submit" method="index" value="Previous Week" class="btn btn-light" onclick="location.href = '@Url.Action("Index", "Appointment",new {state = 1,mon = ViewBag.monday, tues = ViewBag.tuesday,
                                                                                                          wed = ViewBag.wednesday, thurs = ViewBag.Thursday, fri = ViewBag.friday, sat = ViewBag.saturday,
                                                                                                          sun = ViewBag.sunday})'"/>

                <input type="submit" value="Current Week" class="btn btn-light" onclick="location.href = '@Url.Action("Index", "Appointment",new {state = 0,mon = ViewBag.monday, tues = ViewBag.tuesday,
                                                                                                          wed = ViewBag.wednesday, thurs = ViewBag.Thursday, fri = ViewBag.friday, sat = ViewBag.saturday,
                                                                                                          sun = ViewBag.sunday})'"/>

                <input type="submit" value="Next Week" class="btn btn-light" onclick="location.href = '@Url.Action("Index", "Appointment",new {state = 2,mon = ViewBag.monday, tues = ViewBag.tuesday,
                                                                                                          wed = ViewBag.wednesday, thurs = ViewBag.Thursday, fri = ViewBag.friday, sat = ViewBag.saturday,
                                                                                                          sun = ViewBag.sunday})'"/>
public IActionResult Index(int state, string mon, string tues, string wed, string thurs, string fri, string Sat, string sun)
        {
            //var mon
            if (state <= 0)
            {
                ViewBag.monday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Monday).ToString("dd-MM-yyyy");
                ViewBag.tuesday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Tuesday).ToString("dd-MM-yyyy");
                ViewBag.wednesday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Wednesday).ToString("dd-MM-yyyy");
                ViewBag.thursday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Thursday).ToString("dd-MM-yyyy");
                ViewBag.friday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Friday).ToString("dd-MM-yyyy");
                ViewBag.saturday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Saturday).ToString("dd-MM-yyyy");
                ViewBag.sunday = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)DayOfWeek.Sunday + 7).ToString("dd-MM-yyyy");
                return View();
            }
            else if(state == 1){
                var pmon = Convert.ToDateTime(mon).AddDays(-7);
                var ptues = Convert.ToDateTime(tues).AddDays(-7);
                var pwed = Convert.ToDateTime(wed).AddDays(-7);
                var pthur = Convert.ToDateTime(thurs).AddDays(-7);
                var pfri = Convert.ToDateTime(fri).AddDays(-7);
                var psat = Convert.ToDateTime(Sat).AddDays(-7);
                var psun = Convert.ToDateTime(sun).AddDays(-7);
                ViewBag.Monday = pmon.ToString("dd-MM-yyyy"); 
                ViewBag.tuesday = ptues.ToString("dd-MM-yyyy");
                ViewBag.wednesday = pwed.ToString("dd-MM-yyyy");
                ViewBag.thursday = pthur.ToString("dd-MM-yyyy");
                ViewBag.friday = pfri.ToString("dd-MM-yyyy");
                ViewBag.saturday = psat.ToString("dd-MM-yyyy");
                ViewBag.sunday = psun.ToString("dd-MM-yyyy");
                return View();
            }
            else if (state == 2)
            {
                var pmon = Convert.ToDateTime(mon).AddDays(7);
                var ptues = Convert.ToDateTime(tues).AddDays(7);
                var pwed = Convert.ToDateTime(wed).AddDays(7);
                var pthur = Convert.ToDateTime(thurs).AddDays(7);
                var pfri = Convert.ToDateTime(fri).AddDays(7);
                var psat = Convert.ToDateTime(Sat).AddDays(7);
                var psun = Convert.ToDateTime(sun).AddDays(7);
                ViewBag.Monday = pmon.ToString("dd-MM-yyyy");
                ViewBag.tuesday = ptues.ToString("dd-MM-yyyy");
                ViewBag.wednesday = pwed.ToString("dd-MM-yyyy");
                ViewBag.thursday = pthur.ToString("dd-MM-yyyy");
                ViewBag.friday = pfri.ToString("dd-MM-yyyy");
                ViewBag.saturday = psat.ToString("dd-MM-yyyy");
                ViewBag.sunday = psun.ToString("dd-MM-yyyy");
                return View();
            }
            else
            {
                return View("NotFound");
            }

推荐阅读