Satpal Lakhera Ответов: 4

Система.FormatException: входная строка была не в правильном формате. | Ошибка сервера в приложении '/'


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

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error: 

Line 69:         {
Line 70:             path = Server.MapPath("~/Images/");
Line 71:             int Image_Catagory = Convert.ToInt32(DrpImageCatagory.SelectedValue);
Line 72:             int Image_type = Convert.ToInt32(RadioImageType.SelectedValue);
Line 73:             con.Open();

Source File: d:\All Projects Visual Studio\Project_Trial1\Project_Trial1\ImageRep.aspx.cs    Line: 71 

Stack Trace: 

[FormatException: Input string was not in a correct format.]
   System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +11177559
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +145
   System.Convert.ToInt32(String value) +43
   Project_Trial1.ImageRep.BtnSubmit_Click(Object sender, EventArgs e) in d:\All Projects Visual Studio\Project_Trial1\Project_Trial1\ImageRep.aspx.cs:71
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +158
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +174
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +39
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +37
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +105
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4411


с фоновым кодом :
private void fillDrpImageCatagory()
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("Usp_GetImageCatagory", con);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter Adap = new SqlDataAdapter(cmd);
            dt.Clear();
            Adap.Fill(dt);
            DrpImageCatagory.DataSource = dt;
            DrpImageCatagory.DataTextField = "Descrip";
            DrpImageCatagory.DataValueField = "Id";
            DrpImageCatagory.DataBind();
            DrpImageCatagory.Items.Insert(0, "--Select Catagory--");
            con.Close();
        }

        string ss, path;

        protected void BtnUpload_Click(object sender, EventArgs e)
        {
            ss= Server.MapPath("~/Images/");
            FileUpload1.SaveAs(ss + FileUpload1.FileName);
            Image1.ImageUrl = path;

        }

        protected void BtnSubmit_Click(object sender, EventArgs e)
        {
            path = Server.MapPath("~/Images/");
            int Image_Catagory = Convert.ToInt32(DrpImageCatagory.SelectedValue.ToString());
            int Image_type = Convert.ToInt32(RadioImageType.SelectedValue);
            con.Open();

            SqlCommand cmd = new SqlCommand("Insert into ImageRepository1 values('"+ TxtImageName.Text + "','" + TxtImageDescription.Text + "'," + Image_Catagory + "," + Image_type +",'" + path + "')",con);
            int rowcount = cmd.ExecuteNonQuery();
            con.Close();
            if (rowcount > 0)
            {
                LblStatus.Text = "Data Inserted Successful..!";
            }
            else 
            {
                LblStatus.Text = "Something went Wrong !";
            }

база данных:
Create table ImageCategory
(Id int Identity(1,1) primary key,
Descrip varchar(50))

Insert into ImageCategory values('Media')
Insert into ImageCategory values('Medical Science')
Insert into ImageCategory values('Nature')
Insert into ImageCategory values('Science')
Insert into ImageCategory values('Sports')
Insert into ImageCategory values('Objects/Items')
Insert into ImageCategory values('Others')



create proc Usp_GetImageCatagory
as
begin
select * from ImageCategory
end

Andreas Gieriet

Что вы видите при отладке нарушающей функции?
Каково же содержание этого SelectedValue поля?
С уважением
Энди

Satpal Lakhera

я показал, что DrpImageCatagory привязан к таблице базы данных ImageCatagory
а поле SelectedValue привязывается к своему "Id", который является целым числом в ImageCatagory, как описано выше.

syed shanu

Привет,
Я думаю, что вы можете получить строку в выбранном значении .здесь вы преобразуете строку в тип данных Int проверьте код с помощью точки останова.
путь = сервер.MapPath("~/Изображения/");
Строка 71: int Image_Catagory = Convert.ToInt32(DrpImageCatagory.SelectedValue);
Строка 72: int Image_type = Convert.ToInt32(RadioImageType.SelectedValue);

Satpal Lakhera

я также пробовал использовать:
Строка 71: int Image_Catagory = конвертировать.ToInt32(DrpImageCatagory.SelectedValue);
но он выдает ту же ошибку.(как говорит отладчик)

syed shanu

Какое значение вы получили от "DrpImageCatagory.SelectedValue".
Я думаю, что вот ваша проверка ошибок это выбранное значение повторяет целочисленные значения или любое строковое значение типа.

Satpal Lakhera

каждый раз, когда он выбирает "--Select Catagory--", который находится в индексе 0, даже когда я выбираю другие значения из выпадающего списка
почему это?

syed shanu

Я предоставляю в качестве решения

Satpal Lakhera

ага! как сказал Рауль ллок, вы сказали, что это произошло из-за того, что пропал ispostback.
спасибо вам, ребята !!

ZurdoDev

Ошибка очень очевидна. DrpImageCatagory.SelectedValue не является целым числом.

Satpal Lakhera

но я привязываю его к целочисленному значению "id" в таблице базы данных ImageCatagory.
в чем причина?

Azziet

отладьте свой код... конечно, DrpImageCatagory.SelectedValue не является целым числом или может быть его не связывающим никаким значением[пусто или пробел]

4 Ответов

Рейтинг:
28

Raul Iloc

1. Исключение потому, что вы пытаетесь преобразовать в int строковое значение, а не int, в вашем случае может получиться так, что ваш SelectedValue не определено (как пустая строка).

2.Эта ошибка может быть вызвана неправильным вводом элемента управления выпадающим списком в коде. Например обратите внимание что ваш init должен быть выполнен только один раз а не в случае обратной связи как в приведенном ниже примере:

protected void Page_Load(object sender, EventArgs e)
       {
               if (!Page.IsPostBack)
               {   
                   //Init your controls only once in this IF block!
                   fillDrpImageCatagory(); 
                   //...
               }
               else
               {
                   //The page was postback, so you could use the user inputs here!
                   //...     
               }
}


Рейтинг:
2

ExperteeZ | Mark van Hemert

Попробуйте преобразовать его с помощью Convert.Вместо этого ToInt16 ()?


Рейтинг:
18

syed shanu

Как вы сказали, каждый раз, когда вы получаете "Select Catagory" в вашем выпадающем списке boc.

Я думаю, что вы называете это

fillDrpImageCatagory()

метод при загрузке страницы .если это так, то проверьте наличие
 if (!IsPostBack)
        {
fillDrpImageCatagory();
}


а также в вашем кнопочном клике

  protected void BtnSubmit_Click(object sender, EventArgs e)
        {
here first check for your dropdown box value
if(DrpImageCatagory.Selectedtext =="--Select Catagory--")
{
..... your message
return;
}
            path = Server.MapPath("~/Images/");
            int Image_Catagory = Convert.ToInt32(DrpImageCatagory.SelectedValue.ToString());
            int Image_type = Convert.ToInt32(RadioImageType.SelectedValue);
            con.Open();
}


Рейтинг:
0

George Jonsson

Установите точку останова в своем коде в строке, отмеченной ниже:

protected void BtnSubmit_Click(object sender, EventArgs e)
{
    path = Server.MapPath("~/Images/");
    int Image_Catagory = Convert.ToInt32(DrpImageCatagory.SelectedValue.ToString());
    int Image_type = Convert.ToInt32(RadioImageType.SelectedValue);
    con.Open();
    ...

Используйте отладчик, добавьте часы и проверьте содержимое DrpImageCatagory.SelectedValue.
Скорее всего, это не целое число.