Удалите значение по умолчанию для ненулевых свойств при использовании EditFor [asp.net mvc 3]

Как удалить значение по умолчанию, которое по умолчанию добавляется в текстовые поля свойств, не допускающих значения NULL, при использовании помощника EditFor? Я не хочу такого поведения

РЕДАКТИРОВАТЬ

Извините, я не дал достаточно информации.

Например, если вы используете Html.EditorFor со свойством DateTime, оно автоматически установит значение текстового поля на 1/1/0001. Если вы используете "DateTime?"(Обнуляемый), это не так, просто текстовое поле остается пустым.

2 ответа

Вы можете использовать UIHint, чтобы сделать это.

Создайте файл с именем ShortDate.cshtml в EditorTemplates

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

Украсьте свою собственность с помощью атрибута UIHintAttribute, ссылающегося на наш EditorTemplate. Рассмотрим мой класс Order.

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

Когда вы используете

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

следует избегать значения по умолчанию DateTime

предостережение: я только что провел простые тесты, поэтому, пожалуйста, взгляните глубже.

надеюсь, это поможет вам

Я должен был сделать что-то подобное для своих нужд. Я использовал это:

@model DateTime?

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

и это работало довольно хорошо для моих значений DateTime. Те, которые не имеют значения по умолчанию, являются пустыми, а те, которые имеют какое-либо другое значение DateTime, показывают представление объекта ShortDateString.

Другие вопросы по тегам