我有两个按钮,正面和背面,以及一个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小时数据。
我还想防止日期大于返回的基准日期。
这是我的逻辑:
<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);
}
在上面的代码中,我已成功设法为后退按钮正确获取数据,但现在很难在用户点击前进按钮时获取数据,然后我没有得到正确的日期。
答案 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
});