将 HTML 文本输入(无 runat 服务器)的值从用户控件传递到代码隐藏
Passing the value of an HTML text input (without runat server) from a user control to code behind
我快要发疯了,试图将 HTML 文本输入(没有 运行at="server")的值从用户控件发送到隐藏代码。我得到一个没有错误的空字符串。步骤如下:
用户点击 ID="name_btn" 的 ImageButton。
该值必须传递给后面的代码。我正在测试该值是否通过使用页面加载 (if (IsPostBack)) 和按钮单击功能传递,但两者仍然没有值。
请注意,由于某些其他原因,我不想在服务器上将文本输入到 运行,所以我不想添加 运行at="server"。有什么帮助吗?
用户控制页面(name.ascx)
<input type="text" ID="name" />
<asp:ImageButton runat="server" ID="name_btn" OnClick="name_Click" ImageUrl="~/icon-ok.png" />
用户控制 - 代码隐藏 (name.ascx.cs)
public string nameBox;
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
nameBox = Request.Form["name"];
Response.Write("Name: " + nameBox);
}
}
protected void name_Click(object sender, EventArgs e)
{
nameBox = Request.Form["name"];
Response.Write("Name: " + nameBox);
}
主页
<uc:name runat="server" ID="UCname" />
您可以通过两种方式使用 javascript 将值传递给代码隐藏。
1. 单击图像按钮调用 javascript。
在 __EVENTARGUMENT 中设置您的文本框值并调用 __doPostback()。在页面加载中,您可以检查 __EVENTARGUMENT.
中的值
- 从 javascript 开始,您可以使用 PageMethods 直接调用服务器中的函数。此处您的函数必须是 WebMethod。
我想这与您正在尝试做的事情有点冲突。例如,在服务器上您使用 Request.Form[""] 来获取 html 输入元素,但您是通过 id 属性请求它的。 Request.Form 支持按索引和名称查找元素。
那么您是否尝试过将 name="" 添加到 html 输入元素?
您应该在输入标签中添加名称属性,例如:
<input type="text" id="name" name="name"/>
那么你可以使用:
if (IsPostBack)
{
nameBox = Request.Form["name"];
Response.Write("Name: " + nameBox);
}
Request.Form(element)[(index)|.Count]
参数:
元素
集合要从中检索值的表单元素的 名称。
索引
一个可选参数,使您能够访问参数的多个值之一。它可以是 1 到 Request.Form(parameter).Count.
范围内的任何整数
我快要发疯了,试图将 HTML 文本输入(没有 运行at="server")的值从用户控件发送到隐藏代码。我得到一个没有错误的空字符串。步骤如下:
用户点击 ID="name_btn" 的 ImageButton。
该值必须传递给后面的代码。我正在测试该值是否通过使用页面加载 (if (IsPostBack)) 和按钮单击功能传递,但两者仍然没有值。
请注意,由于某些其他原因,我不想在服务器上将文本输入到 运行,所以我不想添加 运行at="server"。有什么帮助吗?
用户控制页面(name.ascx)
<input type="text" ID="name" />
<asp:ImageButton runat="server" ID="name_btn" OnClick="name_Click" ImageUrl="~/icon-ok.png" />
用户控制 - 代码隐藏 (name.ascx.cs)
public string nameBox;
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
nameBox = Request.Form["name"];
Response.Write("Name: " + nameBox);
}
}
protected void name_Click(object sender, EventArgs e)
{
nameBox = Request.Form["name"];
Response.Write("Name: " + nameBox);
}
主页
<uc:name runat="server" ID="UCname" />
您可以通过两种方式使用 javascript 将值传递给代码隐藏。 1. 单击图像按钮调用 javascript。 在 __EVENTARGUMENT 中设置您的文本框值并调用 __doPostback()。在页面加载中,您可以检查 __EVENTARGUMENT.
中的值- 从 javascript 开始,您可以使用 PageMethods 直接调用服务器中的函数。此处您的函数必须是 WebMethod。
我想这与您正在尝试做的事情有点冲突。例如,在服务器上您使用 Request.Form[""] 来获取 html 输入元素,但您是通过 id 属性请求它的。 Request.Form 支持按索引和名称查找元素。
那么您是否尝试过将 name="" 添加到 html 输入元素?
您应该在输入标签中添加名称属性,例如:
<input type="text" id="name" name="name"/>
那么你可以使用:
if (IsPostBack)
{
nameBox = Request.Form["name"];
Response.Write("Name: " + nameBox);
}
Request.Form(element)[(index)|.Count]
参数:
元素
集合要从中检索值的表单元素的 名称。
索引
一个可选参数,使您能够访问参数的多个值之一。它可以是 1 到 Request.Form(parameter).Count.
范围内的任何整数