Удалите значение по умолчанию для ненулевых свойств при использовании 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.