我是一名新的C#开发人员,我有一个下拉列表,其中填充了以下格式的字符串日期:“ Jul 2017”。列表中最多可以包含12个条目。
当用户选择一个日期时,我想将该选择传递给控制器方法,将其转换为DateTime格式,然后将该日期用于进一步处理。
如何将用户选择传递给控制器,以便可以转换和使用它?我在下面添加了注释掉的代码,以显示我要如何进行转换。将日期告知控制器是我的挑战。
我在这个站点上看过类似的问题,它们似乎都过于复杂(也许是由于我的天真),但是我希望有一个更简化的解决方案。
HTML查看代码
@Html.DropDownList("selectList", Model.ReverseMonthsLists())
查看型号代码
public IEnumerable<SelectListItem> ReverseMonthsLists()
{
var selectListItems = GetDates()
.Select(_ => _.ToString("MMM yyyy"))
.Select((dateString, index) => new SelectListItem
{ Selected = index == 0, Text = dateString, Value = dateString })
.ToList();
return selectListItems;
}
public static IEnumerable<DateTime> GetDates()
{
DateTime startDate = new DateTime(2017, 6, 1).Date;
var currentDate = DateTime.Now.Date;
int numberOfMonthsToShow = (currentDate.Year - startDate.Year) * 12 +
currentDate.Month - startDate.Month;
var dates = new List<DateTime>(numberOfMonthsToShow);
currentDate = currentDate.AddMonths(-1);
for (int i = 0; i < numberOfMonthsToShow; i++)
{
dates.Add(currentDate);
currentDate = currentDate.AddMonths(-1);
}
return dates;
}
控制器功能
public ActionResult Report_Performance()
{
//var newDate = DateTime.Parse(strDate); //<- Use newDate as parameter value into aVar to replace date at the end of the string
var aVar = Models.Reporting.ListingStatsReportingViewModel.GetStats(userCurrentService.CompanyId.Value, Models.Reporting.DateTimePeriod.Monthly, DateTime.Now.Date.AddMonths(-1));
return this.View(aVar);
}
javascript参考方案
向控制器获取值的通常方法是让用户将页面发布回服务器,例如通过提交按钮。发生这种情况时,控制器的操作方法可以将所选项目作为参数接收,然后执行其需要执行的操作。因此,如果您只希望用户提交表单,并允许网站根据所选值(以及根据该值计算的列表)呈现下一页,则只需要做。
另一方面,也许您不希望用户提交页面。您希望在页面中显示一系列日期,或者希望通过浏览器中运行的代码处理日期。如果是这种情况,我建议您在浏览器本身中使用Javascript执行计算,从而避免往返。 GetDates()
方法中的任何内容都不需要任何服务器端数据,因此这只是将c#代码转换为Javascript代码的问题。
在极少数情况下,您希望页面上的UX元素根据服务器计算立即得到更新,而无需发布页面。如果您要这样做,则必须使用其他海报提供的AJAX解决方案。它要复杂得多,工作也要多得多。如果不需要,请使用我上面提供的解决方案之一。
提交初始化后删除某些帖子数据 - javascript在初始化提交之后但在将数据发送到处理页面之前,是否可以过滤$ _POST表单数据?我想象过程的方式:提交->收集$ _POST数据->发送数据我想做的事:提交->收集$ _POST数据->删除某些元素->发送数据这样就不必更改处理页面以过滤掉不希望接收的元素了吗? javascript大神给出的解决方案 当然可以,您可以在JS …
写一行到javascript文件 - javascript我正在使用数组来显示网站中的一些图像:var paintingImages; paintingImages = [ { url: 'images/objects/ron.jpg', alt: 'ron' } ]; 该js代码写在paintings.js中,我的主要js代码写在main.js文件中我已经为艺术家制作了这个…
在JavaScript中运行方法C# - javascript打扰一下,我有这种C#asp方法。受保护的无效btnSave_Click(对象发送者,EventArgs e)有谁知道我该如何发送脚本给您?可以办到?。 javascript大神给出的解决方案 是的,那可以做到。为此,您在.aspx.cs页中创建了函数,然后单击保存按钮上的代码将其复制到函数中,然后执行以下步骤。//Call cs method from J…
如何从客户端将数据插入数据库? - javascript我是Web开发的初学者,可以访问cpanel上托管的网站,并且需要对其进行一些更改。这个网站的后端是由蛋糕PHP制作的,我想使用ajax从客户端将一些数据插入其数据库。问题是我不知道如何获取负责插入数据库的PHP文件的URL。参见下面的代码:var xhttp = newXMLHttpRequest(); xhttp.onreadystatechange= …
跨python套接字将JSON传递给Javascript - javascript我正在使用python套接字与JavaScript客户端进行通信。http://docs.python.org/2/library/socket.html然后遵循JavaScript代码的一部分,ws = new WebSocket("ws://localhost:7777/"); ws.onopen = function(){ aler…