【为什么Request.Form无法获得表单值】

songnew 2008-05-03 06:52:39
JokeDefault.aspx中有表单字段:<asp:TextBox ID="title" runat="server"></asp:TextBox>
按钮:<asp:Button Text="添加" ID="addJokeWord" PostBackUrl="~/AddJokeWord.aspx" runat="server" />

处理页AddJokeWord.aspx.cs中用Request.Form["title"]无法取得值,用FindControl也无法找到title控件。

JokeDefault.aspx是放在嵌套模板中的内容页。会不会是因为模板嵌套的原因?

请高手给小弟一个答案,不胜感激!
...全文
336 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
whlxp2004 2010-11-04
了解下看看吧
  • 打赏
  • 举报
回复
LikeCode 2008-05-03
思路是没错的。

一,正如2楼所说,request.form["title"]是获取提交表单里name="title"的值,你查看一下JokeDefault.aspx生成的页面是不是有name="title"的元素,如果应用了母版页或用户控件,那么在IDE编辑器里ID为title的控件生成的HTML不一定是title,将会将控件一层层叠加,这时,在AddJokeWord.aspx可能就不明确name是什么了,解决方法是为JokeDefault注册一个隐藏域,

//e.g.: 
ClientScript.RegisterHiddenField("titleUniqueId", title.UniqueID);

在AddJokeWord获取就
Request.Form[Request.Form["titleUniqueId"].ToString()].ToString();


二,如果是经本站aspx页面提交的,可以通用previouspage.findcontrol(string id) 迟绑定获取源页面的控件,如果获取不到,原因可能是与一同
  • 打赏
  • 举报
回复
cat_hsfz 2008-05-03
1.Request.Form根据ClientID获取值,而不是ID。嵌套在Repeater或者FormView这类控件里面,ClientID是自身ID加上容器控件的ID作为前缀,因此不同于ID本身。

2.因为嵌套了容器控件,所以在Page级别进行FindControl也是找不到的,你要在容器控件上做FindControl。

详细的,你去看看INamingContainer在MSDN里的说明,理解一下就好了。
  • 打赏
  • 举报
回复
beniao277 2008-05-03
楼上这样貌似可以.
  • 打赏
  • 举报
回复
skyaspnet 2008-05-03
如果是放在母版页中的话,

如果是在母版页中查找控件, 则须使用如下方法:

先找到ContentPlaceHolder,然后再找在这个ContentPlaceHolder中的你要找的控件

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
for (int i = 0; i < 10; i++)
{
string a = "HyperLink" + (i + 1); //例如是超链接控件,你的是文本控件, 进行修改即可
Control cr = this.Page.Master.FindControl("ContentPlaceHolder1").FindControl(a);

if (cr != null)
Response.Write("found");
else
Response.Write("not found");
}
}
}


你试一下吧
  • 打赏
  • 举报
回复
iuhxq 2008-05-03
直接用title.Text即可获取

如果你非要用Request.Form

要这样:Request.Form[title.ClientID]
  • 打赏
  • 举报
回复
阿非 2008-05-03
Request.Form["title"]

是获得 name 为title 的

你把name 设为title
  • 打赏
  • 举报
回复
「已注销」 2008-05-03
Request.Form[]
是针对,,HTML表单的,,不是针对服务器控件的,
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区
加入

6.0w+

社区成员

.NET技术交流专区
帖子事件
创建了帖子
2008-05-03 06:52
社区公告

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

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