#asp.net-mvc #entity-framework-4
#asp.net-mvc #entity-framework-4
Вопрос:
ОБНОВЛЕНИЕ: Частично причина этого вопроса может быть связана с плохим дизайном базы данных. Я позволил уговорить себя на дизайн, который, в свою очередь, привел к неправильному выбору дизайна пользовательского интерфейса. Я решил вернуться и реорганизовать дизайн БД, что устранило проблему с пользовательским интерфейсом. Следовательно, этот вопрос спорный, и я не буду принимать ответ. Я не могу удалить вопрос, потому что уже есть ответы и комментарии.
Есть ли способ заставить MVC3 / EF обрабатывать пустое поле формы как ноль? То есть, если пользователь оставляет определенное поле пустым или закрывает определенное поле, я хочу, чтобы EF рассматривал это как ноль, а не как нулевое значение.
Я знаю, как заставить это работать со строковыми полями, используя аннотации данных, но я не могу заставить это работать с целочисленными полями.
Я надеюсь, что этот вопрос имеет смысл. Я все утро возился с аннотациями данных, пользовательскими средствами проверки, бла-бла-бла, и, похоже, у меня не получается заставить это работать.
Комментарии:
1. Я думаю, вам все равно следует принять ответ, который решил бы проблему, даже если у вас самих больше нет проблемы. Это облегчит задачу любому, кто приходит сюда в поисках ответа на тот же вопрос.
Ответ №1:
не присваивайте целому числу тип с нулевым значением. Если вы просто используете обычное старое int
значение, оно автоматически будет равно нулю, если вы не установите для него что-то другое.
Используйте: int
вместо int?
Комментарии:
1. Поле не обнуляется. Проблема в том, что когда пользователь оставляет поле пустым, я хочу, чтобы MVC / EF обрабатывал это как ноль, но вместо этого он обрабатывает его как нулевое значение, которое не является допустимым значением.
2. нет. В моем классе метаданных нет ничего, относящегося к этому конкретному полю. В edmx оно помечено как «IsNullable = false», и я также установил значение по умолчанию в 0 в edmx.
Ответ №2:
Это своего рода обходной путь.Вы можете обнулить поле ввода, если оно пустое, перед отправкой данных формы, когда пользователь нажимает кнопку отправки в вашей форме. Для этого можно использовать JavaScript
Комментарии:
1. Спасибо за предложение. Я подумал, что мог бы сделать что-то подобное, мне просто было интересно, как это сделать с помощью инструментов MVC / EF.
2. Джаянта, может быть, ты могла бы опубликовать какой-нибудь код, иллюстрирующий твое предложение, для всех, кто попадает сюда в поисках подобного решения.