5

我正在使用 asp.net mvc3 中的剃刀视图引擎。

现在,我需要一个 a 的输入,DateTime它应该以固定格式(比如dd-MMM-yyyy)显示值。所以我可以这样做:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MMM-yyyy}")]
public DateTime StartDate { get; set; }

在视图中:

@Html.EditorFor(model => model.StartDate)

但我需要在输入中添加一个类。我认为这是不可能的EditorFor。所以我可以使用

@Html.TextBoxFor(model => model.StartDate, new { @class = "Date" })

但是在这种情况下显示格式不起作用。

Model可以为空。所以,

@Html.TextBox("StartDate", string.Format("{0:dd-MMM-yyyy}", Model.StartDate))

会扔NullReferenceException

4

2 回答 2

9

Ophelia 的方式是我的一个更快的版本。但如果您的应用程序中有几个日期字段,这种方法很有用。所以这就是我喜欢这样做的方式:

-> 在您的解决方案资源管理器中, Shared中创建一个名为“ EditorTemplates ”的文件夹

-> 在那里,添加一个新的(强类型)Partial View。称之为“ DateTime”。

-> 打开这个视图,删除其中的所有代码,并在其中抛出以下代码:

@model System.DateTime
    @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "date" /* + any other html attributes you want */ })

-> 在您的ViewModel中,您的日期字段应如下所示:

[Display(Name = "My Date:"), DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime MyDate { get; set; }

-> 在您的主视图中,以及您想要使用日期字段的任何视图中,您可以只EditorFor在属性上使用,如下所示:

@Html.EditorFor(m => m.MyDate)

您可以在控制器中初始化日期字段或在视图模型的构造函数中设置默认日期。

于 2011-11-11T04:40:45.907 回答
2

我使用它并且它的工作正常:

    @Html.TextBox("ExpiryDate", String.Format("{0:ddd, dd MMM yyyy}", DateTime.Now), new { id = "expirydate" })

希望这是你的意思/需要:)

于 2011-11-11T04:05:49.160 回答