【问题标题】:MVC DateTime Textbox Formatting IssueMVC 日期时间文本框格式问题
【发布时间】:2013-07-25 06:42:49
【问题描述】:

我想做类似的事情

model.PickupDate.ToString("d")

但是 MVC4 不是很喜欢。 PickupDate 是一个DateTime 字段,我想在视图中显示时去掉时间部分,同时保留将TextBoxFor 绑定到javasript datepicker 的new { id = "date1" } 代码。如何仅在这种情况下显示日期部分?

@Html.TextBoxFor(model => model.PickupDate, new { id = "date1" })

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    我就是这样做的。希望对你有帮助

     @Html.TextBoxFor(m => m.MyDateTime, new { Value = Model.MyDateTime.ToString("MM-dd-yyyy"), id = "MySuperCoolId"});
    

    或者在你的情况下

    @Html.TextBoxFor(m => m.PickupDated, new { Value = Model.PickupDate.ToString("d"), id = "date1"});
    

    【讨论】:

      【解决方案2】:

      这应该可行:

      @Html.TextBoxFor(model => model.SomeDateTime, "{0:MM/dd/yyyy}", new { id = "yourID" })
      

      【讨论】:

      • 这是最终使用 razor 和 vb.net 为我工作的方法(由于 vb 进行了少量编辑)谢谢!
      【解决方案3】:

      在您定义模型的地方,您可以提供日期格式,在本例中,我的格式为 DD/MM/YYYY,但您可以使用任何您需要的格式。

      型号代码

      public class MyModel
      {
         [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
         public DateTime SomeDateTime {get;set;}
      }
      

      然后是你的剃须刀

      @Html.EditorFor(model => model.SomeDateTime, new { id = "date1" })
      

      【讨论】:

      • 抱歉,这并不能解决问题。我添加了您上面提到的 DisplayFormat 属性,但编辑视图仍显示完整的 DateTime 格式,并在日期后附加了 12:00 AM。由于它是 sql express 数据库中的 DateTime 格式,因此它被保存为 7/18/2013 12:00:00 AM 格式,然后编辑视图就这样显示它。
      • @AustinHarris 对剃刀和属性进行了快速更改。我所拥有的是展示而不是编辑
      • 如果我更改为 EditorFor,那么日期会以您上面列出的 Model 属性定义的正确格式显示。但是,JavaScript 日期选择器代码不会像使用 TextBoxFor 那样挂钩到 EditorFor。 :(
      • 你能创建一个jsfiddle.net 来显示javascript 问题吗? (如果您使用 Firefox,请右键单击日期编辑器并选择检查元素以获取生成的 HTML 节点)
      【解决方案4】:

      基于https://stackoverflow.com/a/13702321/787511,使用 JQueryUI 日期选择器测试。

      @Html.TextBoxFor(model => model.PickupDate, "{0:d}", new { id = "date1" })
      

      【讨论】:

        【解决方案5】:

        如果你只在视图上进行转换,你可以这样写

        @Html.TextBoxFor(model => model.SomeDateTime, String.Format("{0:MM/dd/yyyy}"))
        

        【讨论】:

        • 嗨,但我仍然需要视图中的新 { id = "date1" } 代码才能使用 javascript 日期选择器。此代码不起作用:@Html.TextBoxFor(model => model.PickupDate, String.Format("{0:MM/dd/yyyy}"), new { id = "date1" })
        【解决方案6】:

        显示将取决于文化。虽然在大多数情况下所有其他答案都是正确的,但它对我不起作用。如果附加了 jQuery datepicker,文化问题也会导致不同的问题。

        如果您希望通过以下方式强制格式转义/

        @Html.TextBoxFor(model => model.PickupDate, "{0:MM\\/dd\\/yyyy}", new { id = "date1" })
        

        如果没有为我转义,它会显示 08-01-2010 与预期的 08/01/2010

        如果没有转义,jQuery datepicker 也会选择不同的 defaultDate,在我的例子中是May 10, 2012

        【讨论】:

          【解决方案7】:
             @Html.TextBoxFor(model => model.Date, String.Format("{0:dddd, MMMM d, yyyy}",Model.Date),  new { @class = "form-control"})
          

          【讨论】:

          • 请添加一些解释。
          • 只需在这个答案中添加一些解释......谢谢:)
          猜你喜欢
          • 1970-01-01
          • 2020-10-26
          • 2016-01-05
          • 2012-12-07
          • 1970-01-01
          • 2021-12-19
          • 2018-09-23
          相关资源
          最近更新 更多