Member 13740053 Ответов: 0

System.formatexception: 'входная строка была не в правильном формате.' ошибка


вот мой код позади:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

namespace Project_IT191P
{
    public partial class view_cart : System.Web.UI.Page
    {
        string s;
        string t;
        string[] a = new string[8];
        int tot = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[8] { new DataColumn("ProductName"), new DataColumn("Description"), new DataColumn("Price"), new DataColumn("Stocks"), new DataColumn("Category"), new DataColumn("ImageURL"), new DataColumn("ProductID"), new DataColumn("id") });

            if (Request.Cookies["cookie"] != null)
            {
                s = Convert.ToString(Request.Cookies["cookie"].Value);

                string[] strArr = s.Split('|');

                for (int i = 0; i < strArr.Length; i++)
                {
                    t = Convert.ToString(strArr[i].ToString());
                    string[] strArr1 = t.Split(',');
                    for (int j = 0; j < strArr1.Length; j++)
                    {
                        a[j] = strArr1[j].ToString();
                    }

                    dt.Rows.Add(a[0].ToString(), a[1].ToString(), a[2].ToString(), a[3].ToString(), a[4].ToString(), a[5].ToString(), i.ToString(), a[6].ToString());

                    tot = tot + (Convert.ToInt32(a[2].ToString()) * Convert.ToInt32(a[3].ToString()));
                }

            }

            d1.DataSource = dt;
            d1.DataBind();

            l1.Text = tot.ToString();
        }

       
    }
}


Что я уже пробовал:

в нем говорится, что
tot = tot + (Convert.ToInt32(a[2].ToString()) * Convert.ToInt32(a[3].ToString()));
входная строка была не в правильном формате

George Swan

Похоже, что[2] или[3] - это пустая строка. Кроме того, вам не нужно вызывать ToString() для строк

F-ES Sitecore

Вы пытаетесь преобразовать test (a[2] или a[3]) в int, но текст не может быть преобразован в int. Мы не знаем, что это за текст, поэтому не можем сказать, почему, для этого вам нужно будет использовать отладчик. Мы не можем сказать вам, как справиться с тем, что происходит, когда конверсия невозможна, поскольку мы не знаем ваших бизнес-правил.

Если "a" должен иметь возможность удерживать только int, то сделайте его массивом int вместо строки и сделайте версию int, когда массив будет заполнен.

0 Ответов