日期:2014-05-18  浏览次数:20445 次

页面传值的疑问&上传照片的问题,各位高手,朋友来指点迷津啊
环境介绍:
语言:C# 工具:vs2005 数据库:sql server2000 操作平台:windowsXP
问题1:
  A页面向B页面跳转时传递了一个参数,我也在B页面的page_load事件中接收了该参数,B页面中还放置了HiddenField控件,B页面中还有其他方法要获得A页面传来的参数,我想问大家的就是:B页面中其他方法接参是直接Request.QueryString["参数名"]还是先用隐藏域控件接收一下,希望大家告诉我两种方法的区别,谢谢。
问题2:
  我做了一个图片上传的功能单独测试的时候可以上传,整合到其他页面时就会出异常:
  //上传图片的按钮方法
  protected void btnUp_Click(object sender, EventArgs e)
  {
  //接收前页传来的参数
  resumId = Convert.ToInt32(Request.QueryString["ResumeID"]);

  //自定义的数据库连接方法
  DataAccess da = DataAccessFactory.CreateDataAccess();

  //一开始设置上传控件是不可见的点击按钮后可见
  FileUpload1.Visible = true;
   
  if (IsPostBack)
  {
  bool fileOK = false;
  string remoteDir = "~/web/upload/personal/";
   
  //判断控件是否有值,这里出错,控件始终找不到值直接给false
  if (FileUpload1.HasFile)
  {
  //将文件名和后缀扩展名连接然后转小写
  string fileEx = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
   
  //判断扩展名是否匹配
  string[] allowEx ={ ".gif", ".png", ".jpeg", ".jpg" };
  for (int i = 0; i < allowEx.Length; i++)
  {
  if (fileEx == allowEx[i])
  {
  fileOK = true;
  }
  }
  } 
  //判断控件有值&检查扩展匹配后执行上传
  if (fileOK)
  {
  try
  {
  //上传文件
  FileUpload1.PostedFile.SaveAs(Server.MapPath(remoteDir) + "//" + ((Common.User)Session["user"]).UserName.ToString() + "//" + FileUpload1.FileName);

  //自定义报错信息后面相同  
  ShowMessage(new Common.Message.Message("Message", "M995"));

  //指定服务器文件路径
  string remotePath = remoteDir + "//" + ((Common.User)Session["user"]).UserName.ToString() + "//" + FileUpload1.FileName;

  //此处是页面图片控件获取地址
  imgPhoto.ImageUrl = remotePath;

  //更新数据库
  string sqlPhoto = "update T_PS_BASEINFO set PHOTO_URL='" + remotePath + "' where PS_USER_ID=" + ((Common.User)Session["user"]).UserId;
  da.Update(sqlPhoto, null);
  string strSql = "select count(*) from T_PS_BASEINFO where ID='" + resumId + "'";
  //自定义数据库的查询方法
  DataSet ds = da.SelectAllAsDataSet(strSql);
  if (ds.Tables[0].Rows.Count > 0)
  {
  ShowMessage(new Common.Message.Message("Message", "E021", "添加"));
  FileUpload1.Visible = false;
  }
  else
  {