主页的POST方法问题

时间:2012-10-22 08:03:37

标签: asp.net forms post submit master-pages

我正在尝试提交以下表单,其中应用了母版页。

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
   <p>
      What is your name?
      <asp:TextBox ID="YourName" runat="server" ClientIDMode="Static"></asp:TextBox>
   </p>

   <p>
      What is your age?
      <asp:TextBox ID="YourAge" runat="server" Columns="3" ClientIDMode="Static"></asp:TextBox>
   </p>

   <p>
      What is your favorite color?<br />
      <asp:RadioButtonList ID="FavoriteColor" runat="server" ClientIDMode="Static">
         <asp:ListItem Selected="True">Red</asp:ListItem>
         <asp:ListItem>Green</asp:ListItem>
         <asp:ListItem>Blue</asp:ListItem>
      </asp:RadioButtonList>
   </p>

   <p>
      <asp:CheckBox ID="EatGreenEggsAndHam" runat="server" Checked="True" ClientIDMode="Static" 
      Text="Will You Eat Green Eggs and Ham?" TextAlign="Left" />
   </p>

   <p>
      <asp:Button ID="SubmitButton" runat="server" Text="Submit Form" 
           PostBackUrl="~/About.aspx" 
           onclick="SubmitButton_Click" />
   </p>

</asp:Content>

我正在尝试使用POST方法从表单中获取提交的数据。

在About.aspx页面中

我正在使用以下代码

Response.Write(Request.Form["YourName"].ToString());

预期的行为是打印名称为“YourAge”的文本框中键入的名称,但提交的表单元素ID已更改如下

  

ctl00 $ $搜索Maincontent YOURNAME

为什么会这样?我需要使用id“YourName”

获取控件的值

enter image description here

我想在提交表单时删除此“ctl00 $ MainContent $”部分。检索表单值超出了我的范围,并且由其他人完成。他们只要求将表单值提交为“YourName”而不是“ctl00 $ MainContent $ YourName”

2 个答案:

答案 0 :(得分:1)

尝试利用ASP.net提供的抽象。您可以使用YourName.Text来检索YourName TextBox的值。

Response.Write(YourName.Text);

此外,ctl00$MainContent$YourName不是生成的元素的ID,而是其名称。 ID可能类似于BodyContent_YourName

答案 1 :(得分:1)

首先,不建议直接从Request.Form读取。大多数情况下,您应该使用YourName.Text来读取值。

但是,如果您仍想阅读Request.Form中的值,则需要了解ASP.NET管道和http协议的工作原理。当您从浏览器提交页面时,浏览器会创建一个带有键值对的HTTP请求,其中键表示输入控件的“名称”,而值表示相应的值。

在您的代码中,您只将ID设置为静态而不是名称。因此,要将名称设置为与ID相同,您可以使用针对此SO Question

所述的技术

<强> UDPATE

我能想到的另一种方法如下

Response.Write(Request.Form[YourName.UniqueID].ToString());

唯一ID是呈现给元素的名称,您可以使用它来从Request.Form

中获取值