我的输入字段采用dd / MM / yyyy hh:mm格式,例如31/12/2018 21:05 但是当它提交到post操作时,它不会绑定到datetime类。
<input name="startDate" type="text" class="form-control m-input" readonly="" value="31/12/2018 21:05">
我的viewmodel属性是这样
public DateTime StartDate {get;set;}
如果我将上述类型更改为字符串,则可以正常工作....或者如果我以yyyy-mm-dd HH:mm格式传递输入数据,则可以将其绑定到DateTime类型。 我试过在注解下面加注,但仍然没有运气。
[DataType(DataType.DateTime)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy hh:mm}", ApplyFormatInEditMode = true)]
public DateTime StartDate {get;set;}
我没有使用helper类,它只是html中的输入字段。 我可以将其作为一个字符串字段并转换为日期时间,但想知道是否有任何更简单的方法。
任何帮助将不胜感激。
答案 0 :(得分:0)
没有简单的方法。
您的输入控件包含日期和时间的文本表示。您的模型属性需要一个DateTime
对象。您必须将一个转换为另一个。
答案 1 :(得分:0)
问题似乎是小时格式,为“ hh”,但输入值为“ 21:05”。
此行工作正常:
var date = DateTime.ParseExact("31/12/2018 21:05", "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
但是如果格式为“ dd / MM / yyyy hh:mm”,则会出现相同的错误
修改
您已经更新了该主题,据我了解,您可以在此处选择几个选项。一种是将值作为字符串接收并解析,或者只是创建客户ModelBinder,这是一个示例: https://www.codeproject.com/Tips/1078167/DateTime-Issue-In-MVC
祝你好运!
答案 2 :(得分:0)
这可能是由于您当前的区域性设置(如果您将StartDate
文本框的值更改为2018-12-31 21:05
,则应该可以使用)。将en-GB
(例如)区域性添加到您的Web.config:
<system.web>
<globalization uiCulture="en" culture="en-GB"/>
</system.web>