【问题标题】:Problems with DateTime, it appears with 00:00:00DateTime 的问题,它出现在 00:00:00
【发布时间】:2011-12-07 11:12:21
【问题描述】:

当我注册用户时,我的数据库具有 DateTime 类型的 Birthdate 值。

当我收到我的数据,编辑注册表时,我的剃须刀是这样的:

@Html.TextBoxFor(model => model.Birthdate)

日期显示如下:28/05/1983 00:00:00

显然,我只想要生日。在我的控制器中,我有这个:

User userset = db.User.Find(id);
return View(userset);

很简单...谁能帮我解决这个问题?

【问题讨论】:

    标签: asp.net-mvc-3 datetime c#-4.0 razor


    【解决方案1】:

    在模型中的属性上方设置 DisplayFormat 数据注释。

    public class User
    {
        [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
        public DateTime Birthdate { get; set; }
    
        ...
    }
    

    那么不要使用@Html.TextBoxFor(..),而是使用@Html.EditorFor(...)

    有关详细信息,请参阅DisplayFormatAttribute MSDN page

    如果您使用 EF 生成了数据模型,您可以简单地为您的类创建一个元类来应用数据注释。例如,如果我的 db 文件名为 MyDB.edmx,则创建一个名为 MyDB.cs 的好友类文件。然后在里面,我将扩展User 类,将元数据类附加到它并在元类中指定数据注释:

    [MetadataType(typeof(UserMetaData))]
    public partial class User{ }
    
    public class UserMetaData
    {
       [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
       public DateTime Birthdate { get; set; }
    }
    

    参见Scott Gu's post on validation,主要是部分“但是如果我们使用图形工具来进行 ORM 映射呢?”

    【讨论】:

    • 谢谢@link664,但我不能这样做,我有为我的数据库上下文类生成的代码,它不接受将你显示的这一行放在里面......还有其他方法可以做那个?
    • 您是如何使用实体框架生成数据库上下文类的?
    • 我导入了 System.ComponentModel.DataAnnotations;要在我生成的模型类中使用,是的,我使用 EF 生成,我发布了 [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)] 正如你在 Birthdate 行上建议的那样,但它一直不起作用...
    • 你是像我上面提到的那样创建了一个好友类还是直接编辑生成的实体框架文件?
    • 嗨@link664,我尝试将所有这些代码发布到我的App.cs,如你所说的de main 文件中,但它没有工作。我试图移动 User.cs 的第一行并将其余部分保留在 App.cs 类中,但它也没有工作,因为 Im newbie in MVC3 and Entity Framework, I dont know where Im 犯了我的错误......
    【解决方案2】:

    您可以使用Html.TextBox 而不是Html.TextBoxFor 来执行类似的操作。

    @Html.TextBox("Birth date", String.Format("{0:dd/MM/yyyy}", Model.Birthdate))
    

    【讨论】:

    • 您的方法似乎很简单,但在这种情况下,我的 TextBoxFor 内容将与此混合。我如何在我的 Controller 中获取这些数据?
    【解决方案3】:

    来自 jQuery 的 DatePicker 是接收用户日期输入的更好方法。尤其有助于避免各种日期格式混淆。

    更多详情:http://blogs.msdn.com/b/stuartleeks/archive/2011/01/25/asp-net-mvc-3-integrating-with-the-jquery-ui-date-picker-and-adding-a-jquery-validate-date-range-validator.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多