如何从ASP .NET中的内容页面获取表单值

时间:2010-01-30 13:30:06

标签: c# asp.net webforms master-pages

我有一个母版页,里面有<form runat="server">行和ContentPlaceHolder。

我正在尝试使用此母版页创建一个内容页面,其中包含文本框。但我无法从该conent页面使用Request.Form["textbox"]来获取theese文本框的值。我需要使用Request.Form["ctl00$ContentPlaceHolder1$textbox"]

这是正常的做法吗?如果不是我可能做错了什么?

顺便说一下,我使用相同的内容页面来处理表单值。

所以我想我的问题实际上是:如何在同一内容页面中访问内容页面的表单值?

4 个答案:

答案 0 :(得分:1)

假设您有标准的ASP.Net控件,您可以使用

访问后面代码中的控件值
Dim x as string = Me.txtMyTextBox.Text

如果你想在脚本中使用它,它非常相似

<%

Dim x as string = Me.txtMyTextBox.Text

%>

您不需要使用Request.Form,因为这些控件的值是在页面的ViewState中维护的。

答案 1 :(得分:1)

使用ASP.NET,您实际上不应该知道或关心HTTP请求和发布的表单值。该框架封装了这些内容,允许您将TextBox作为Windows GUI环境中的组件进行处理。

在您的代码中,您可以使用其Text属性来获取和设置其值:

string whatsInThatBox = myTextBox.Text;
myTextBoxText = "Now, let's write something else here...";

通常,如果需要添加引用元素的客户端代码,您应该只关心呈现的<input>元素的神秘名称和ID。

答案 2 :(得分:0)

您可以使控件可访问,将它们从设计器中取出并在主页的代码隐藏文件中公开:

public MyMasterPageClass 
{
  public TextBox textbox;
}

要在内容页面中访问它:

var text = ((MyMasterPageClass )Master).textbox.Text;

或者,在您的内容页面标记中使用@MasterType directive

<%@ MasterType VirtualPath="~/masters/MyMasterPage.master”" %>

在页面中,您不需要演员:

var text = Master.textbox.Text;

答案 3 :(得分:0)

您可以创建一个usercontrol(包含文本框),然后向该控件添加一个公共属性,该控件返回文本框的字符串值。使用此用户控件替换母版页上的文本框,然后您可以从任何内容页面获取该属性。