1

使用 EditFor 帮助器时,如何删除默认添加到不可为空属性的文本框中的默认值?我不想要那种行为

编辑

抱歉,我没有提供足够的信息。

例如,如果您将 Html.EditorFor 与 DateTime 属性一起使用,它将自动将文本框值设置为 1/1/0001。如果您使用“DateTime?”(可为空),它不会,它只是将文本框留空。

4

2 回答 2

2

为了我自己的需要,我不得不做这样的事情。我用这个:

@model DateTime?

@Html.TextBox("", (Model.Value != default(DateTime) ? Model.Value.ToShortDateString() : string.Empty))

它对我的 DateTime 值非常有效。没有默认值的为空白,而具有其他 DateTime 值的则显示对象的 ShortDateString 表示。

于 2011-09-03T00:07:26.873 回答
2

你可以使用 UIHint 来做到这一点。

在 EditorTemplates 中创建一个名为 ShortDate.cshtml 的文件

@model DateTime
@{ var value = Model == default(DateTime) ? null : Model.ToShortDateString(); }
@Html.TextBox(string.Empty, value)

使用引用我们的 EditorTemplate 的 UIHintAttribute 装饰您的属性。考虑一下我的 Order 课程。

public class Order {
    [UIHint("ShortDate")]
    public DateTime Date { get; set; }
}

当你使用

@Html.EditorFor(x => x.Date)

它应该避免 DateTime 的默认值

警告:我只是做了简单的测试,所以请深入研究一下。

希望对你有帮助

于 2011-03-03T00:40:02.577 回答