gpt4 book ai didi

asp.net-mvc - 如何使用ajax将DatePicker创建的日期值传递给mvc 5 Controller

转载 作者:行者123 更新时间:2023-12-01 16:26:03 28 4
gpt4 key购买 nike

我有一个事件 session 页面。每个事件都有一个日期时间 (dd/mm/yyyy HH:mm:ss)。我正在尝试创建一个带有开始日期和结束日期的排序过滤器,以查看这些日期之间的所有事件。为此,我创建了两个带有 JqueryUI 日期选择器的文本框。我还在 Controller 中创建了方法,以及用于传递数据的 JS 脚本。

我的问题是将日期传递给 Controller ​​。它不起作用,当我尝试在 Controller 方法中使用它时,我有一个空值。我尝试过在 DateFilter 中使用 Datetime? ,它可以获取值,但此后我无法使用 AddDays

你能告诉我是否需要使用“toISOString”以及如何使用?

JS 脚本:

$("#btndatefilter").click(function () {
var startdate = $('#datestart').val();
var enddate = $('#dateend').val();
$.ajax({
url: "/AuditActivities/FilterByDate",
type: "GET",
data: { dateFilter: { StartDate: startdate, EndDate: enddate } },
})
.done(function (auditActivity) {
$("#res").html(auditActivity);
});
});

Controller

    [HttpGet]
public ActionResult FilterByDate(DateFilter dateFilter)
{
DateTime endperiod = dateFilter.EndDate.AddDays(1).AddTicks(-1);

string returnpartial = "";
var auditActivity = db.AuditActivity.Include(a => a.Pc).Include(a => a.Activity).Include(a => a.Users);

auditActivity = auditActivity.Where(a => a.Date > dateFilter.StartDate && a.Date < endperiod).OrderBy(a => a.Date);
returnpartial = "Indexactivityuser";
return PartialView(returnpartial, auditActivity.ToList());
}

数据类

public class DateFilter
{
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}

最佳答案

使用getDate方法而不是 val(),那么变量 startdateenddate 的类型为日期。然后使用toISOString() 。 HTH

$(function() {
$("#datestart").datepicker();
$("#dateend").datepicker();

$("#btndatefilter").click(function() {
var startdate = $('#datestart').datepicker('getDate');
var enddate = $('#dateend').datepicker('getDate');
var dateFilter =
{ StartDate: startdate.toISOString(), EndDate: enddate.toISOString() };

$.ajax({
url: "@Url.Action("FilterByDate", "AuditActivities")",
type: "GET",
data: dateFilter
})
.done(function(auditActivity) {
$("#res").html(auditActivity);
});
});
});
<小时/>

或者您可以将datepickerval() 传递给 Controller ​​并解析那里的字符串。为此,请指定日期选择器的格式。

$("#datestart").datepicker({dateFormat:  "yy-mm-dd"});

模型现在具有字符串属性

public class DateFilterModel
{
public string StartDate { get; set; }
public string EndDate { get; set; }
}

并在 Controller 中按预期格式解析字符串

// try { ...
int[] startInfo = dateFilter.StartDate.Split('-').Select(s => int.Parse(s)).ToArray();
DateTime start = new DateTime(startInfo[0], startInfo[1], startInfo[2]);

对于yyyy-MM-dd,它也适用于我的ParseExact()

string startInfo = dateFilter.StartDate;
DateTime start= DateTime.ParseExact(
startInfo,
"yyyy-MM-dd",
System.Globalization.CultureInfo.InvariantCulture);

关于asp.net-mvc - 如何使用ajax将DatePicker创建的日期值传递给mvc 5 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013820/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com