根据按钮点击的频繁更改日期从数据库中获取前一天的数据

时间:2016-04-04 09:08:49

标签: c# asp.net-mvc linq datetime

我有两个按钮,正面和背面,以及一个div:

<div id="data"></div>

现在,当我的页面加载时,我将默认显示基准日期前24小时的数据。

我的背部和前部按钮:

<button type="button" id="btnForward" class="btn btn-default btn-xs">Forward</button>

<button type="button" id="btnBack" class="btn btn-default btn-xs">Forward</button>

当用户点击后退按钮时,我想获取之前的24小时数据,点击前进按钮我想提前24小时数据。

  • 页面加载的当前日期:日期应为2016年2月26日 - 2016年2月25日
  • 当用户点击“返回”按钮时第一次:2016年2月25日 - 2016年2月24日
  • 当用户点击“返回”按钮时第二次:2016年2月24日 - 2016年2月23日
  • 当用户第一次点击“前进”按钮时:2016年2月25日 - 2016年2月24日
  • 当用户点击第二次转发按钮时:2016年2月26日 - 2016年2月25日

我还想防止日期大于返回的基准日期。

这是我的逻辑:

<script type="text/javascript">
    var count = 0;
    $(document).ready(function () {
        MyFunction(Actions);
    }
    function MyFunction(Actions) {
        // My ajax function call on Controller.
        Parameters:Actions,count
    }
    $("#btnBack").click(function () {
        Actions = "Back";
        count++;
        MyFunction(Actions);
    }); 
    $("#btnForward").click(function () {
        Actions = "Forward";
        // count--;
        MyFunction(Actions);
        // count++;
    });
</script>

我的控制器:

public ActionResult Merge(string actionType=null,int count=0)
{
    var date1 = new DateTime(2016, 2, 26,16,27,57);
    DateTime Start= new DateTime();
      if(!string.IsNullOrEmpty(actionType))
        {
          date1= date1.AddDays(-(count));
            if (actionType == "Back")
                Start = date1.AddDays(-1);
            else
            {
                Start= date1.AddDays(1);
            }

        }
        else
            Start = date1.AddDays(-1);
    var data = context.MyTable.Where(c => c.Date.Value > Start&& c.Date.Value <= date1);
}

在上面的代码中,我已成功设法为后退按钮正确获取数据,但现在很难在用户点击前进按钮时获取数据,然后我没有得到正确的日期。

1 个答案:

答案 0 :(得分:1)

您的控制器方法只需要一个参数,int表示相对于您的基准日期的日期。

public ActionResult Merge(int days)
{
    if (days > 0) // protect against malicious users
    {
        // return an error
    }
    var baseDate = new DateTime(2016, 2, 26,16,27,57);
    DateTime EndDate = baseDate.AddDays(days);
    DateTime StartDate = basedate.AddDays(days - 1)
    var data = context.MyTable.Where(c => c.Date > StartDate && c.Date <= EndDate );
    ....
}

然后在视图中,初始化days的javascript变量,并根据单击的按钮递增/递减

// initially disable the forward button
<button type="button" id="forward" class="btn btn-default btn-xs" disabled="disabled">Forward</button>
<button type="button" id="back" class="btn btn-default btn-xs">Back</button>

<script>
    var days = 0;
    var forward = $('#forward');
    $('#forward').click(function() {
        days++;
        if (days == 0) {
            forward.prop('disabled', true);
        }
        // call ajax function and pass value of `days` to the controller
    });
    $('#back').click(function() {
        days--;
        forward.prop('disabled', false);
        // call ajax function and pass value of `days` to the controller
    });