asp.net mvc - DTO не получает неправильный ввод - PullRequest
0 голосов
/ 06 мая 2011

У меня есть базовый объект DTO, который я пытаюсь обновить, я заметил, что, если я отправляю некоторые данные из пользовательского интерфейса на контроллер и ввожу строку внутри десятичного поля, проверка аннотаций данных не подхватывает это, на самом деле строка почему-то конвертируется в 0 ...

Как сделать так, чтобы мои десятичные значения оставались десятичными, т. Е. Выдавать ошибку, если добавлена ​​строка, нужно ли создавать пользовательский поставщик значений для этого объекта DTO?

Мой DTO:

public class FeesDTO
    {
        public int ID{ get; set; }
        //[DataType( DataType.Currency)]
        //[DisplayFormat(ApplyFormatInEditMode=true)]  
        public decimal ClientFee { get; set; }
        public string VAT { get; set; }
        public string GrossProfit { get; set; }
    }

Если я хочу обновить свои сборы и ввести «что-то» в поле ClientFee, это преобразует ввод строки в 0 ...

Примечание:

Закомментированные аннотации данных не работали ... Это правильный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

когда вы вводите строковое значение, например, «xyz» для ClientFee, который является десятичной переменной, его нельзя преобразовать в десятичную, и вы получите 0 в качестве значения clientfee, но когда форма будет отображена снова, вы увидите сообщение проверки, сообщающеечто

xyz is not valid for field clientfee

это, возможно, связано с тем, что, когда modelbinder не может преобразовать xyz в десятичную, он добавляет ошибку в коллекцию ошибок словаря Modelstate.вы можете сделать эту строку значений в вашей модели представления и проверить ее самостоятельно с помощью регулярных выражений, а когда вы хотите сохранить ее в db, вы можете преобразовать ее в вашу сущность с помощью AutoMapper для аналогичной утилиты.

0 голосов
/ 06 мая 2011

Я думаю, вам нужно использовать валидаторы аннотации данных:

http://www.asp.net/mvc/tutorials/validation-with-the-data-annotation-validators-cs

Реализуйте одно в поле «Десятичное число», которое выдает ошибку проверки, если элемент управления размещен с недесятичной записью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...