我从 .NET MVC Web 应用程序中的 Action 的隐式绑定中获取 DateTime。问题是我正在获取格式为“MM/dd/yyyy”的日期,而我通过带有 Ajax 格式的查询字符串发送它,格式为“dd/MM/yyyy”。
我知道这是使用 GET 协议而不是 POST 时 .NET MVC Binder 的一个已知问题,所以我确实实现了一个自定义活页夹来将日期解析为正确的格式。这是代码:
public class SearchVMBinder:DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
SearchVM result = (SearchVM)base.BindModel(controllerContext, bindingContext);
try
{
result.Date = DateTime.Parse(result.Date.ToString(),CultureInfo.GetCultureInfo("es-ES"));
}
catch(Exception e)
{
NLog.LogManager.GetCurrentClassLogger().Error("Error al hacer el Bind específico de SearchVM. ", e);
}
return result;
}
}
但是,使用该代码 Parse 无法正常工作,它什么也不做。我正在使用“01/04/2014 11:37:00”(四月)之类的日期对其进行测试,并且我正在“result.Date”日期“04/01/2014 11:37:00” (一月),在解析之前和之后。
所以,问题是:为什么“DateTime.Parse”方法不能正确解析日期?
更新:
下面是 SearchVM 的代码:
[ModelBinder(typeof(SearchVMBinder))]
public class SearchVM
{
public DateTime Date { get; set; }
public string StudyCaseNumber { get; set; }
public string PatientNumber { get; set; }
public string PatientName { get; set; }
public string PatientFamilyName { get; set; }
public string PatientMothersMaidenName { get; set; }
public string DoctorName { get; set; }
public string RoomName { get; set; }
public E_OrderedBy OrderBy { get; set; }
}
这里是控制器动作的标题:
public ActionResult ListSearch(SearchVM searchFilter)
谢谢你。