首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

页面传值的疑问&上传照片的有关问题,朋友来指点迷津

2012-01-23 
页面传值的疑问&上传照片的问题,各位高手,朋友来指点迷津啊环境介绍:语言:C#工具:vs2005数据库:sql server

页面传值的疑问&上传照片的问题,各位高手,朋友来指点迷津啊
环境介绍:
语言: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
  {
  ShowMessage(new Common.Message.Message("Message", "E020", "添加"));


  }
  }
  catch (Exception)
  {
  ShowMessage(new Common.Message.Message("Message", "M994"));
  }
  finally
  {
  da.Close();
  }
  }
  }
  }









[解决办法]
1.如果是地址栏传值就直接QueryString,没有第二种方法。隐藏域只能通过标准的后台变量读取,和QueryString无任何关系。

2.图片上传的<form>要求Type="multipart/form-data"(拼写可能有误).一般是.net会自己加上的,不过如果你是从别的地方复制的,也不敢保证会自动加。
[解决办法]
1.完全没有必要先用隐藏域控件接收
[解决办法]
1. 一般安全级别就用URL带参数行是了.
2. 不太确定.将这行FileUpload1.Visible = true;去掉试试.
[解决办法]
用post方法 在 <form> 中添加Type="multipart/form-data"(拼写可能有误).
[解决办法]
你可以用session传值啊 或者定义静态变量(不推荐)
不一定用.aspx?传值啊 这种传值适合少数吧
用session 里面可以放object类型的 你定义个arraylist 把值放数组里 在加如session 在那边在取

热点排行