3

我是asp.net mvc3的新手。由于 asp.net mvc3 中使用的约定,修改单个代码确实令人困惑和困难。我试图以1999 年 9 月 5 日的格式仅显示 BirthDate 的日期,而不是显示日期和时间。在 Edit.cshtml 中很好,日期选择器用于选择日期,值保存在仅日期的数据库中。但是,我有Date数据类型的 BirthDate 列而不是 DateTime ,并且 @Html.DisplayFor(model => model.BirthDate);Details.cshtml中使用时显示日期和时间。在谷歌搜索时,我发现并实现了以下代码,用于以期望格式显示日期:

@Model.BirthDate.ToString("dd MMM YYYY");

@Html.DisplayFor(model => model.BirthDate.ToString("dd MMM YYYY"));

它给出了错误,没有重载方法需要 1 个参数。此外,我可以像这样使用:

[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
pubilc DateTime BirthDate { get; set }

从那以后,我对实体框架使用了模型优先方法。在我的场景中,我应该在哪里实现以上 DisplayFormat 属性或者在 Details.csthml 中以正确方式显示日期的剃刀语法

4

4 回答 4

1

好的,我知道我正在回复 8 个月前发布的问题,但我唯一的目的是,这可能对其他人将来引用这个问题有用。
我也不是 MVC 的代言人,我也遇到了类似的问题,我只需要显示日期而不是时间,并且以下对我有用。

而不是@Html.DisplayFor(). 使用<span>
So,对于所提到的情况,它将是这样的:

<span>@String.Format("{0:D}", model.BirthDate)</span>

Output: Sunday, September 05, 1999 

不,需要添加额外的类/文件进行格式化。

于 2013-03-08T10:54:33.333 回答
0

第三种方法是我认为最好的方法 cos

  1. 您的演示模型正在处理 UI 的所有方面,并且您的视图没有不必要和冗余的格式代码,尤其是在您重用该属性时。
  2. 启用单元测试
  3. 如果您重用模型,则在不同页面之间保持一致。

您还可以编写一个帮助方法来格式化日期并在所有演示/视图模型中一致地使用它。

public string FormattedDate(this DateTime dateTime)
{
  return dateTime.ToString("dd MMM YYYY");
}
于 2012-06-23T05:46:24.933 回答
0

我喜欢使用一种装饰器模式来处理这种事情。假设您的模型类称为MyModel。然后像这样定义一个包装类:

public class MyModelDecorator 
{
    public MyModel BaseItem { get; set; }

    [DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
    public DateTime BirthDate { get; set; }

    public MyModelDecorator(MyModel baseItem)
    {
        BaseItem = baseItem;
    }
}

然后在您的视图中,您可以引用基本模型属性或装饰属性。

@Html.DisplayFor(m => m.BirthDate)
@Html.DisplayFor(m => m.BaseItem.SomeOtherProperty)

如果有比这个更好的解决方案,那么我真的很想听听......

于 2012-06-23T05:52:43.580 回答
0

对于任何 ASPX 用户 sumbad 的回答都有帮助,但这就是你的做法:

<%=Html.Enconde(String.Format("{0:D}", item.yourDate))%>

希望这可以帮助某人。

于 2014-04-22T15:20:02.097 回答