使用 EditFor 帮助器时,如何删除默认添加到不可为空属性的文本框中的默认值?我不想要那种行为
编辑
抱歉,我没有提供足够的信息。
例如,如果您将 Html.EditorFor 与 DateTime 属性一起使用,它将自动将文本框值设置为 1/1/0001。如果您使用“DateTime?”(可为空),它不会,它只是将文本框留空。
使用 EditFor 帮助器时,如何删除默认添加到不可为空属性的文本框中的默认值?我不想要那种行为
编辑
抱歉,我没有提供足够的信息。
例如,如果您将 Html.EditorFor 与 DateTime 属性一起使用,它将自动将文本框值设置为 1/1/0001。如果您使用“DateTime?”(可为空),它不会,它只是将文本框留空。
为了我自己的需要,我不得不做这样的事情。我用这个:
@model DateTime?
@Html.TextBox("", (Model.Value != default(DateTime) ? Model.Value.ToShortDateString() : string.Empty))
它对我的 DateTime 值非常有效。没有默认值的为空白,而具有其他 DateTime 值的则显示对象的 ShortDateString 表示。
你可以使用 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 的默认值
警告:我只是做了简单的测试,所以请深入研究一下。
希望对你有帮助