none
请教网页间数据传递的问题 RRS feed

  • 问题

  • 我在十年前用ASP做过网站,现在学习.NET,发现有很大的不同。

    前两天我找到“北大青鸟”的ASP.NET视频教程看,我用VS2008跟着做练习,遇到了麻烦。他们里边讲的用表单POST传递数据,在另一个网页里用Request接收,我没有做出来。而我的书里(ASP.NET 3.5)竟然没有这方面的内容。

    请问:

    1、对于来自其它网页的表单,用POST方法传来的参数,下面的这两条语句有什么问题吗?

    string userName = Reques.Formt["txtUserName"].ToString();

    string userName = Request.Form.Get("txtUserName").ToString();

    2、对于发送数据的网页,HTML类型的表单和ASP类型的表单执行起来有什么区别吗?

    3、是不是这样的数据传递方法已经过时了?因为我在比较新的书里没找到类似的介绍。

    多谢指教!!!


    运行环境:Vista Home Premium + IIS, VS2008

    • 已编辑 CharlesCHN 2009年5月2日 4:27 运行环境
    2009年5月2日 4:23

答案

  • 问题一:
    搂主,你好,这两行代码完全没有问题,请放心使用,不过你可以简化一下,不再需要ToString(),因为返回的就是字符串。
    string userName = Reques.Formt["txtUserName"];
    string userName = Request.Form.Get("txtUserName");

    问题二:
    对于发送数据的网页,HTML类型的表单和ASP类型的表单执行起来有什么区别吗?
    发送数据与服务器端技术是无关的,Post数据的时候都是一样的。

    问题三:
    是不是这样的数据传递方法已经过时了?
    没有过时的概念,任何技术的使用都要跟场景结合,什么时候使用什么,没有说这个先进,就老用老用,传值有很多种,楼上的朋友也列举了,使用的时候根据自己的需求,结合场景灵活使用。

    你遇到的问题:
    在另一个网页里用Request接收,我没有做出来,
    ASP.NET,默认是Post数据到自己页面的,Post另外一个页面需要修改form的action属性。另外从一个页面Post页面有很多方法,请参考
    http://cpsing.javaeye.com/blog/257009

    jon.valett@gmail.com
    • 已标记为答案 CharlesCHN 2009年5月3日 4:03
    2009年5月2日 17:43
    版主

全部回复

  • 一般情况下你可以用如下方式进行数据的提交和传递
    A页面 提交事件
    Response.Redirect("B.aspx?id=123");
    B页面 一般情况是Load事件
    string id=Request.QueryString["id"];

    或者

    在A页面设置比如Botton,ImageBotton,LinkBotton的 PostBackUrl属性为 B.aspx,这样的方式也可以取出A页面的信息
    if(PreviousPage.IsCrossPagePostBack == true) { 
        string info=  ((TextBox)this.PreviousPage.FindControl("控件的ID,比如一个TextBox")).Text;
    }
    或者可以是
    string info=Reques.Form["TextBox1"].ToString();

    2009年5月2日 5:50
  • 你好,除了用 URL 传值 还可以利用 Session, Cache, Application 等, 
    如在 A 页面设置 Session["UserName"] = "Test"; 那在 B页面可以用 string s =  Session["UserName"].ToString() 取到

    知识改变命运,奋斗成就人生!
    2009年5月2日 15:08
    版主
  • 最好不要用Session,Cache,Application传值,相当浪费内存的。影响性能,就用URL传值吧,用Request.Form[key]来获取。
    cdjboy
    2009年5月2日 16:59
  • 问题一:
    搂主,你好,这两行代码完全没有问题,请放心使用,不过你可以简化一下,不再需要ToString(),因为返回的就是字符串。
    string userName = Reques.Formt["txtUserName"];
    string userName = Request.Form.Get("txtUserName");

    问题二:
    对于发送数据的网页,HTML类型的表单和ASP类型的表单执行起来有什么区别吗?
    发送数据与服务器端技术是无关的,Post数据的时候都是一样的。

    问题三:
    是不是这样的数据传递方法已经过时了?
    没有过时的概念,任何技术的使用都要跟场景结合,什么时候使用什么,没有说这个先进,就老用老用,传值有很多种,楼上的朋友也列举了,使用的时候根据自己的需求,结合场景灵活使用。

    你遇到的问题:
    在另一个网页里用Request接收,我没有做出来,
    ASP.NET,默认是Post数据到自己页面的,Post另外一个页面需要修改form的action属性。另外从一个页面Post页面有很多方法,请参考
    http://cpsing.javaeye.com/blog/257009

    jon.valett@gmail.com
    • 已标记为答案 CharlesCHN 2009年5月3日 4:03
    2009年5月2日 17:43
    版主
  • 非常感谢楼上各位高手的热心回复!

    参考各位的意见,我又重新检查了几遍,发现出错的地方是在第一个网页的表单里边。输入框应该是这种格式:

    〈input  name="txtUserName" type="text" /〉

    但其中的name属性我给写成了id="txtUserName"。原因之一是我学艺不精,原因之二是在VS2008里制作HTML网页的功能较少(为什么微软不把FrontPage的功能加进来?)。


    再次感谢各位的帮助!!!
    2009年5月3日 4:11
  • 你好!我尝试了你的第二种方法 可是运行提示错误 

    未将对象引用设置到对象的实例。

    我上网查了一下说是没有赋初值 我是从A页面登陆验证用户名   然后传递A页面的用户名到B页面  就是 txtName  还要赋初值吗?

    2011年11月6日 14:04