MVC - 日期格式转换将Date变为null

时间:2015-02-16 06:00:34

标签: c# jquery asp.net-mvc date

我正在使用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

如何解决这个问题?

1 个答案:

答案 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/