IF语句中的赋值

时间:2012-01-19 15:08:48

标签: c# asp.net if-statement

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 个答案:

答案 0 :(得分:1)

如果传递的值为null,则Path.GetExtension返回null,如果传递的值没有扩展名,则返回string.Empty。 因此,请检查 ASPxUploadControl1.FileName 中的值是否实际包含有用的内容。

如果不是这种情况,那么你将不得不查找设置值的位置并从那里进行调试,以找出未设置的原因。

答案 1 :(得分:1)

你可以单步执行吗?

NewFilename = fileLocation;

被执行?

如果是这样,NewFilename之前和之后的值是什么?

这看起来像ASP.Net代码。 如果是。当您尝试在代码隐藏中的其他地方使用 NewFilename 时出现的问题是空白的。 如果是,则可能需要将 NewFilename 保存到会话中以允许您使用它。

hth,
艾伦。

答案 2 :(得分:1)

重构您的代码并考虑您想要的过程..然后调试代码..测试它...如果您有问题然后编辑您的帖子..这就是我的建议.. 如果语句应该以代码块“{}”包装,你可以尝试{}一个好的经验法则,即使可读性也可以包围{}如果你有if,否则它会使得难以阅读以及提供援助。

在您声明以下内容的代码中,在方法本身中使它们成为变量

  • string fileExt = string.Empty;
  • string extension = 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";
        }
    }
}