0

在我的 mvc 应用程序中,我以字符串格式存储了我的日期。例如:10212013

但我想在我的 UI 中将那个刺痛显示为一个日期,例如:2013年 10 月 21 日

这个怎么存档??是否可以DisplayFormat为此目的使用。

编辑
这是我需要做的。

@Html.DisplayFor(model => DailyTransaction.MyDate)  

MyDate 的数据类型是字符串,所以这将显示为10212013

但我需要将其显示为 10/21/2013

我可以在 MVC 项目的视图中使用字符串格式吗

我尝试使用以下内容,但这对我也不起作用。

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public string MyDate{ get; set; }
4

5 回答 5

1

尝试创建一个自定义的 DisplayFormatAttribute,它将以正确的格式格式化字符串。请参阅如何制作可配置的 DisplayFormat 属性

编辑:再次查看您的问题后,您可以查看使用编辑器模板来显示数据:请参阅:http: //blogs.msdn.com/b/nunos/archive/2010/02/08/quick-tips-关于-asp-net-mvc-editor-templates.aspx

于 2013-10-21T11:41:56.680 回答
0

如果您确定可以使用的日期的保存格式Substring()Format()方法如下:

string.Format("{0}/{1}/{2}", myStringDate.Substring(0,2),
                             myStringDate.Substring(2,2),
                             myStringDate.Substring(4))

您可以将其应用于您的班级,这是一个演示

public class myModelClass
{
    private string _MyDate;
    public string MyDate
    {
        get {
            return string.Format("{0}/{1}/{2}", _MyDate.Substring(0,2),
                                     _MyDate.Substring(2,2),
                                     _MyDate.Substring(4)); }
        set { _MyDate = value; }
    }

}
于 2013-10-21T12:03:36.737 回答
0

您可以为特定于您的要求的各种数据类型创建自定义模板。

要创建自定义模板,请在/Views/Shared/DisplayTemplates- 调用它中创建一个新文件StringToDate.cshtml。该名称很重要,在下面的函数调用中使用。

接下来,在文件中添加代码以根据需要将字符串转换为日期格式。最简单的解决方案是插入/字符。

@model string
if (Model != null && Model.Length == 8)
{
  @(Model.Insert(2,"/").Insert(5,"/"))
} else {
  @("Err")
}

将以上内容添加到文件中并保存。如果基本格式检查失败,else 部分只会输出错误。

接下来在您的视图中,您需要在哪里显示此值。只需使用

@Html.DisplayFor(model => model.StringDate, "StringToDate")
于 2013-10-22T12:46:08.793 回答
0

使用DateTime.ToString()喜欢;

YourDateTime.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);

例如;

DateTime d = DateTime.Today;
Console.WriteLine(d.ToString("MM/yy/yyyy", CultureInfo.InvariantCulture));

输出将是;

10/21/2013

这里一个DEMO.

作为替代方案,您可以使用DisplayFormatAttribute.DataFormatStringlike;

[DisplayFormat(DataFormatString="{0:MM/yy/yyyy}")]
于 2013-10-21T11:41:30.503 回答
0

是的,你只需要使用插入功能。这是示例

string dateValue = "10212013";          
string dateFormat = x.Insert(2, "/");
dateFormat = dateFormat.Insert(5, "/");

就这样...

于 2013-10-21T11:53:17.987 回答