我正在使用Jquery ui datepicker,dateFormat设置为dd/mm/yyyy
。
我的本地计算机服务器日期格式设置为mm/dd/yyyy
。所以我在View中转换了格式。
<input type="text" class="form-control datepicker" value="@string.Format("{0:dd/MM/yyyy}", DateTime.Now)" name="LoanDate" required />
在我的POST模型中,我将LoanDate
作为null
。
如果我将我的本地计算机日期格式重置为dd/mm/yyyy
,我会在我的Controller POST方法中获得LoanDate
。
如何解决这个问题?
答案 0 :(得分:1)
这就是我解决它的方法: -
public class UTCDateTimeModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
// Check if the DateTime property being parsed is not null or "" (for JSONO
if (value.AttemptedValue != null && value.AttemptedValue != "")
{
// Parse the datetime
var dt = DateTime.ParseExact(value.AttemptedValue, "dd/MM/yyyy", CultureInfo.InvariantCulture);
return dt;
}
else
{
return null;
}
}
}
在Global.asax中 - Application_Start(): -
var binder = new UTCDateTimeModelBinder();
ModelBinders.Binders.Add(typeof(DateTime), binder);
ModelBinders.Binders.Add(typeof(DateTime?), binder);
现在,我的模型中的LoanDate
格式为dd/MM/yyyy
格式。
http://www.martin-brennan.com/custom-utc-datetime-model-binding-mvc/