MVC3: Как заставить пустое поле обновляться как 0 во время UpdateModel

#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. Джаянта, может быть, ты могла бы опубликовать какой-нибудь код, иллюстрирующий твое предложение, для всех, кто попадает сюда в поисках подобного решения.