【问题标题】:mvc form submit datetime field not recognising the formatmvc表单提交日期时间字段无法识别格式
【发布时间】:2018-10-23 11:16:25
【问题描述】:

我的输入字段采用 dd/MM/yyyy hh:mm 格式,例如2018 年 12 月 31 日 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;}

我没有使用辅助类,它只是 html 中的一个输入字段。 我可以将其作为字符串字段并转换为日期时间,但想知道是否有更简单的方法。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# asp.net-mvc model-binding


    【解决方案1】:

    没有简单的方法。

    您的输入控件包含日期和时间的文本表示。您的模型属性需要一个 DateTime 对象。您必须将一个转换为另一个。

    【讨论】:

      【解决方案2】:

      这可能是因为您当前的文化设置(如果您将 StartDate 文本框的值更改为 2018-12-31 21:05 它应该可以工作)。将en-GB(例如)文化添加到您的 Web.config:

      <system.web>
          <globalization uiCulture="en" culture="en-GB"/>
      </system.web> 
      

      【讨论】:

        【解决方案3】:

        问题似乎是小时格式,它是“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

        祝你好运!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-06-11
          • 2018-05-02
          • 1970-01-01
          • 1970-01-01
          • 2023-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多