刚转行的菜鸟。问个页面值传递问题。。100分见面礼赠送
刚从C++Builder 转过来。。顶头上司要我们学。。。准备转B/S结构
我还是一点不知~~求指点。。。
要求是这样的,,
2个页面,第一个页面里有姓名(TextBox),性别(RadioButton),国籍(DropDownList)
在第一个页面里面写的如下代码Default.asp.cs:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TextName.Text = " ";
}
protected void Button1_Click(object sender, EventArgs e)
{
Session[ "Iname "] = TextName.Text;
if (RadioButton1.Checked == true)
Session[ "Sex "] = "男 ";
if (RadioButton2.Checked == true)
Session[ "Sex "] = "女 ";
Session[ "guojia "] = DropDownList1.Text;
Response.Redirect( "Default2.aspx ");
}
}
然后在第二个页面里面写的如下代码Default2.asp.cs:
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Session[ "Iname "].ToString();
Label2.Text = Session[ "Sex "].ToString();
Label3.Text = Session[ "guojia "].ToString();
Session.Remove( "Iname ");
Session.Remove( "Sex ");
Session.Remove( "guojia ");
}
}
运行的时候很奇怪,在单击了以后惟独姓名没传递过去,,?
我试了好多次,,不知道怎么搞的,就是过不去
如果我是把页面切换到Default2.asp.cs点运行的话,会指向Label1.Text = Session[ "Iname "].ToString();弹出一个提示:
用户代码未处理NullReferenceException
未将对象引用设置到对象的实例。
如果我把这一句换个位置,放到第二行,也就是说第一句放:Label2.Text = Session[ "Sex "].ToString(); 那么他就会针对这一句弹出相同的提示。。
头大了。。
对于高手来说,应该不算问题了吧。。
别见笑,,,希望大家能帮我解决下。 。。感激不尽~
另外,如果我在第二页加一个返回按纽,,应该怎么操作?
[解决办法]
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
TextName.Text = " ";
}
------解决方案--------------------
楼上已经说了.另外不是特别重要的问题尽量不要用session
[解决办法]
Page_Load事件在每次页面传回去的时候都会执行
虽然你只点了按钮的提交可是到服务器上还是要先执行Page_Load事件,然后才是按钮的点击事件
所以如果你在 Page_Load 里面没做这个判断 if (!IsPostBack) 你的 TextName.Text = " ";总会执行,你当然就得不到值了
[解决办法]
Remove掉了,再刷新就该报错了,第一次加载的时候执行是正解
[解决办法]
要从页面控件获取值。。if(!Page.IspostBack)是必须的。不然获取的都是空值。。。。
的确最好还是不要太多依赖Session