我在MVC3应用程序中使用JQuery Date Time Picker。我使用日期时间来过滤列表的结果。以下是我的搜索URL的样子
/Objectives?Description=&FromDate=03%2F10%2F2011
所选日期时间格式为2011年10月3日。
但是当它在控制器中解决时,它将被视为2011年3月10日。
选定的文化是en-GB
。
但是当它以ajax形式使用时,此问题不存在,因为Ajax URL自动设置为
/Objectives?Description=&FromDate=10%2F03%2F2011
我使用以下代码行来格式化DateTimePicker中的日期时间。
$(function () {
$(".datePicker").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd/mm/yy',
altField: 'dd-mm-yy',
altFormat: 'dd/mm/yy'
});
});
以下是DateTime
的编辑器代码@model DateTime?
@{
var htmlAttributes = new Dictionary<string, Object>();
htmlAttributes.Add("class", "datePicker");
htmlAttributes.Add("readonly", "true");
}
@Html.TextBox(string.Empty, (Model.HasValue ? Model.Value.ToString() : string.Empty), htmlAttributes)
我们使用以下模型从用户那里获取数据。
public class LogModel : LogBaseModel
{
[Display(Name = "From Date")]
public DateTime? FromDate { get; set; }
[Display(Name = "To Date")]
public DateTime? ToDate { get; set; }
}
以下是index.cshtml中的代码
@using (Html.BeginForm("Index", "Calls", Model, FormMethod.Get))
{
<div id="filter_set_wrapper">
@Html.Custom().FilterLabelFor(model => model.FromDate)
@Html.Custom().TextBoxFor(model => model.FromDate)
@Ajax.TextBoxClear("FromDate", "FromDateClear(#FromDate#, ##);", "Clear From Date", "PopUpLink.PNG")
</div>
<div id="filter_set_wrapper">
@Html.Custom().FilterLabelFor(model => model.ToDate)
@Html.Custom().TextBoxFor(model => model.ToDate)
@Ajax.TextBoxClear("ToDate", "ToDateClear(#ToDate#, ##);", "Clear To Date", "PopUpLink.PNG")
</div>
<input type="submit" class="btn" value="Filter" />
}
以下是控制器方法
public ActionResult Index(LogModel callsModel)
{
if (callsModel.FromDate != null)
{
var model = callsModel;
var d = DateTime.Parse(model.FromDate.Value.ToString("MM/dd/yyyy"));
}
}
任何人都可以帮我解决这个问题。第一个答案是给出正确的日期时间。但问题是当与上面提到的模型一起使用时无法获得控制器方法的正确日期。如果有人知道如何修复它与上述型号请回复。
先谢谢。
答案 0 :(得分:0)
您使用DateTime.ParseExact吗?
var date = DateTime.ParseExact(Request["FromDate"], "dd/MM/yy", CultureInfo.InvariantCulture);
我觉得应该有用吗?