2011-12-01 49 views
3

当我注册用户时,我有我的数据库有一个DateTime类型的DateTime类型。DateTime的问题,它出现在00:00:00

当我收到我的数据备份,编辑登记表,我有我的剃须刀这样的:

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

的日期显示是这样的:28/05/1983 00:00:00

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

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

非常简单...任何人都可以帮助我解决这个问题吗?

回答

2

你可以做这样的事情用Html.TextBox,而不是使用Html.TextBoxFor

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

你的方法似乎很简单,但在这种情况下,我的TextBoxFor内容将与这一个混合。我如何在我的控制器中获取这些数据? –

3

将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映射?'

+0

谢谢@ link664,但我不能这样做,我有我的生成我的数据库上下文类的代码,它不接受放置这一行,你表现出它里面......那里有任何其他方式做到这一点? –

+0

您是如何使用实体框架生成数据库上下文类的? – link664

+1

我导入了System.ComponentModel.DataAnnotations;在我生成的Model类中使用,是的我使用EF生成的,我发布了[DisplayFormat(DataFormatString =“{0:dd/MM/yy}”,ApplyFormatInEditMode = true)],因为你建议在Birthdate行,但它一直不工作... –