初学.net,高分求救第4题,怪事呀!请进.............

study2002 2003-08-19 11:28:45
我现在正在学习内部对像Request
页1为 default.asp传username和userpwd到default.aspx
其中default.aspx.cs文件中相关代码如下:
NameValueCollection coll;
string[] arr;
int m;
int i;
coll=Request.Form; //coll为username=aaaa&userpwd=1111
arr=coll.AllKeys;
m=arr.GetUpperBound(0); //m=1
for(i=0;i<=m;i++);
{
Response.Write("表单键:"+arr[i]+"<br>");
}
按理应该有以下输出
表单键:username
表单键:userpwd

可没有,出现如下错误信息:
-------------
索引超出了数组界限。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IndexOutOfRangeException: 索引超出了数组界限。
----
堆栈跟踪:


[IndexOutOfRangeException: 索引超出了数组界限。]
ch06._01.answerpost() in d:\dotnetstudy\ch06\01.aspx.cs:38
ch06._01.Page_Load(Object sender, EventArgs e) in d:\dotnetstudy\ch06\01.aspx.cs:23
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()
-----------------------

经我测试,发现那个变量i=2了,因为m=1,所以就超出,出错,我现在就不明白为什么我初始化=0,从哪变成2了,还是其它哪地方出错了,大家帮帮我,谢谢!
...全文
97 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
study2002 2003-08-19
  • 打赏
  • 举报
回复
问题已解决
for(i=0;i<=m;i++);
去掉;即可。
流梓 2003-08-19
  • 打赏
  • 举报
回复
看看这个是否对你有帮助。
如何把某个变量的值从一个aspx传给给另外一个aspx程序?

--------------------------------------------------------------------------------

Q: 如何把某个变量的值从一个aspx传给给另外一个aspx程序?

A: 关于如何在两个WebForm之间传递数据,目前已经有很多很好的方法,例如Session,Cookie,还有QueryString等。针对这个问题,即“当a.aspx通过Server.Transfer跳转到b.aspx后,如何在b.aspx中获得a.aspx中textBox1的值”的问题,在ASP.NET中还有一个非常直接的实现方法。

  简单的说,在b.aspx中可以通过Context.Handler来获得a.aspx,并通过Page.FindControl()来获得textBox1的值。以下是一段例子代码:

Page page= (Page)Context.Handler;
this.Label1.Text = ((TextBox)page.FindControl("TextBox1")).Text;
  通过这段代码,当a.aspx中通过Server.Transfer跳转到b.aspx后,就可以在b.aspx中获得a.aspx中TextBox1控件的值。对于其他类型的控件也可以以同样形式访问。

  需要说明的是,这里的TextBox1必须是一个Design-Time添加的Server Control。

study2002 2003-08-19
  • 打赏
  • 举报
回复
还有,出现过警告
是这一句
for(i=0;i<=m;i++);
---------
warning CS0642: 空语句可能出错
study2002 2003-08-19
  • 打赏
  • 举报
回复
可我这样写也是有道理的,我知道params是获取综合信息,方便,但为什么我这样会出错
我现在就想初始化i=0,怎么一执行就=2了,这样当然执行不下去。
为什么我这样不行?郁闷中。
wacle 2003-08-19
  • 打赏
  • 举报
回复
m=Request.Params.Count-1;
wacle 2003-08-19
  • 打赏
  • 举报
回复
不是这个原因,i=2的时候,不会再执行了.你直接这样写就可以了,不用那么麻烦
for(i=0;i<=m;i++);
{
Response.Write("表单键:"+Request.Params[i]+"<br>");
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧