Назначение внутри оператора IF - PullRequest
0 голосов
/ 19 января 2012
string Newfilename;
string Defaultfilename;

        protected void btnup_Click(object sender, EventArgs e)
    {
        if (ASPxUploadControl1.HasFile)
        {
            string fileExt =
                Path.GetExtension(ASPxUploadControl1.FileName);


            if (fileExt == ".xls" || fileExt == ".xlsx")

                try
                {
                    string extension = Path.GetExtension(ASPxUploadControl1.FileName);
                    string id = Guid.NewGuid().ToString();
                    string fileLocation = string.Format("{0}/{1}{2}", Server.MapPath("upload/"), id, extension);
                    ASPxUploadControl1.SaveAs( fileLocation );
                    StatusLabel.Text = "Upload status: File uploaded!";

                    Newfilename = fileLocation;
                    Defaultfilename = Path.GetFileName(ASPxUploadControl1.FileName);

                }
                catch (Exception ex)
                {
                    StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
                }
            else
            {
                StatusLabel.Text = "Please choose excel file";
            }

        }
    }

Я пытаюсь присвоить значения Newfilename и Defaultfilename (внутри "try", после именования загруженного файла), но они остаются пустыми.

Где я ошибаюсь?

Ответы [ 3 ]

1 голос
/ 19 января 2012

Можете ли вы пройти через выполнение?

ли

NewFilename = fileLocation;

выполнить?

Если это так, каковы значения NewFilename до и после?

Это похоже на код ASP.Net. Если это. Проблема в том, что когда вы пытаетесь использовать NewFilename в другом месте кода, это пустое место. Если да, то NewFilename может потребоваться сохранить в сеансе, чтобы вы могли использовать его.

чч,
Алан.

1 голос
/ 19 января 2012

Рефакторинг вашего кода и подумайте о процессе, который вы хотите ... затем отладьте код .. Протестируйте его ... и если у вас возникла проблема, то отредактируйте свой пост ... это то, что я предлагаю ... Если операторы должны быть обернуты в блок кода "{}" таким же образом, как у вас, попробуйте {}, хорошее правило для равномерной читабельности будет заключаться в том, чтобы обернуть все вокруг {}, если у вас есть Иначе, иначе он делает, если трудно читать а также оказать помощь.

внутри вашего кода, где вы объявляете следующее, сделайте их переменными внутри самого метода

  • string fileExt = string.Empty;
  • расширение строки = string.Empty;
  • string id = string.Empty;
  • string fileLocation = string.Empty;

чтобы ваш метод выглядел так

protected void btnup_Click(object sender, EventArgs e)
{ 

    string fileExt  = string.Empty; 
    string extension = string.Empty;
    string id = string.Empty;
    string fileLocation = string.Empty;

    if (ASPxUploadControl1.HasFile)
    {              
         fileExt = Path.GetExtension(ASPxUploadControl1.FileName);
         if (fileExt == ".xls" || fileExt == ".xlsx")
         {
           try
           {
             extension = Path.GetExtension(ASPxUploadControl1.FileName);
             id = Guid.NewGuid().ToString();
             fileLocation = string.Format("{0}/{1}{2}", Server.MapPath("upload/"), id, extension);
             ASPxUploadControl1.SaveAs( fileLocation );
             StatusLabel.Text = "Upload status: File uploaded!";
             Newfilename = fileLocation;
             Defaultfilename = Path.GetFileName(ASPxUploadControl1.FileName);
            }                  
            catch (Exception ex)
            {
              StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
            }
         }
         else
        {
          StatusLabel.Text = "Please choose excel file";
        }
    }
}
1 голос
/ 19 января 2012

Path.GetExtension возвращает ноль, если переданное значение равно нулю, и возвращает строку. Пустой, если переданное значение не имеет расширения.Поэтому, пожалуйста, проверьте, действительно ли значение внутри ASPxUploadControl1.FileName содержит что-то полезное.

Если это не так, вам придется поискать, где установлено значение, и отладить егочтобы выяснить, почему он не установлен.

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