我有一个母版页,里面有<form runat="server">
行和ContentPlaceHolder。
我正在尝试使用此母版页创建一个内容页面,其中包含文本框。但我无法从该conent页面使用Request.Form["textbox"]
来获取theese文本框的值。我需要使用Request.Form["ctl00$ContentPlaceHolder1$textbox"]
。
这是正常的做法吗?如果不是我可能做错了什么?
顺便说一下,我使用相同的内容页面来处理表单值。
所以我想我的问题实际上是:如何在同一内容页面中访问内容页面的表单值?
答案 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(包含文本框),然后向该控件添加一个公共属性,该控件返回文本框的字符串值。使用此用户控件替换母版页上的文本框,然后您可以从任何内容页面获取该属性。