页面传值的疑问&上传照片的问题,各位高手,朋友来指点迷津啊
环境介绍:
语言: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 在那边在取