刚从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(); 那么他就会针对这一句弹出相同的提示。。头大了。。对于高手来说,应该不算问题了吧。。别见笑,,,希望大家能帮我解决下。 。。感激不尽~另外,如果我在第二页加一个返回按纽,,应该怎么操作?
在第一个页面里面写的如下代码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(); 那么他就会针对这一句弹出相同的提示。。头大了。。对于高手来说,应该不算问题了吧。。别见笑,,,希望大家能帮我解决下。 。。感激不尽~另外,如果我在第二页加一个返回按纽,,应该怎么操作?
{
if (!IsPostBack)
TextName.Text = "";
}
用户代码未处理NullReferenceException
-----------------------------------------------------------------页面1不运行,Session还没有写入,当然为空。
另外不是特别重要的问题尽量不要用session
TextName.Text = ""; 此时才会执行 Button1_Click 所在TextName.Text已经不是aaa,已经清空了
现在保存在session
Session["Iname"] = TextName.Text; 这一句其实保存的是个空值.
Page类.
只不过通过ViewState在一个类的不同实例间传值,
造成了有事件的假象.
加一个返回的按纽<input type="button" value="返回" onclick="javascript:window.location.href='1.aspx'">-----------------------------:)~这个,,我还看不懂,,,这个,不是写在.cs里面的吧
---------------------------------------------------------
response.redirect其实上是当服务器碰到这条语句时发送一条指令(包含新的地址)给浏览器,然后让浏览器去发送http请求,请求response.redirect后面的那个新的http地址
因此每次点了后,还要执行这个函数
protected void Page_Load(object sender, EventArgs e)
{
TextName.Text = "";
}
这也是3.0中为什么增加Server.Transfer的原因。
所以要用IsPostBack判断。
的确最好还是不要太多依赖Session
直接写在aspx中./
JS调用。直接在aspx控件的onclick事件触发