Вопрос по c#, asp.net-mvc-3, asp.net-mvc – Невозможно неявно преобразовать тип «десятичный» в «строку»

1

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

Привет спасибо за ответ не могли бы вы объяснить, где это будет сделано? Спасибо user1300580

Ваш Ответ

4   ответа
0

Total ? Похоже, это строковый тип. Здесь вы пытаетесь установить десятичное значение для строкового типа. То есть, вы получаете эту ошибку. Таким образом, вам нужно преобразовать десятичную строку в строку, прежде чем присваивать ее переменной. ИспользоватьtoString() метод.

order.Total = orderTotal.ToString();

Как уже упоминал Тудор, лучше использовать Total как десятичное свойство, так как вам будет легко выполнять все математические операции. Вам не нужно преобразовывать его в десятичный формат каждый раз, когда вы хотите выполнить арифметическую операцию, и снова преобразовать ее обратно в строку

@ user1300580: прочитайте второй пункт моего ответа. Лучше сделать его десятичным
отредактировано выше, чтобы показать класс заказа user1300580
0

Order класс имеетTotal свойство, которое является строкой. Проверьте определение класса дляOrder, Если это так, я рекомендую изменитьTotal тип данных - десятичный, потому что иметь значение валюты, представленное в виде строки, не имеет смысла.decimal имеет больше смысла.

3

Просто позвониToString чтобы получить строковое представление десятичного значения:

order.Total = orderTotal.ToString("G");

Хотя я не понимаю, почему вы должны хранить членTotal какstring а не какdecimal тоже.

@ user1300580: Во втором классе вы разместили (классOrder), просто измените типTotal отstring вdecimal.
Привет, спасибо за совет, где его нужно было бы изменить, чтобы изменить общее значение на десятичное, а не строку user1300580
работает удовольствие, спасибо, я явно искал не в той области. & quot; Ошибка начинающих & quot; user1300580
0

Order.Total в десятичный. Тип данных Decimal не преобразуется автоматически в строку (и наоборот), поэтому вы получаете сообщение об ошибке плюс любые последующие вызовыOrder.Total будет связан со строкой, поэтому вы не сможете использовать такие операторы, какOrder.Total +=

Также обратите внимание, что любое удобное связывание, такое как формат DataTable'а 's'; свойство будет проигнорировано, поскольку базовая архитектура не будет вызывать string.ToString (format).

где вы предлагаете, чтобы это изменение произошло? Вы имеете в виду те же места, что и люди, которые ответили выше? user1300580
@ user1300580 - внести изменения в «Заказ»; учебный класс. Не используйте «orderTotal.ToString ()» потому что это будет считаться хаком, чтобы удовлетворить модель.

Похожие вопросы