我疯狂地尝试将HTML文本输入(没有runat =“server”)的值从用户控件发送到后面的代码。我得到一个没有错误的空字符串。步骤如下:
用户点击ID =“name_btn”的ImageButton。
必须将值传递给后面的代码。我正在测试是否通过使用页面加载(if(IsPostBack))和按钮单击功能来传递值,但两者中仍然没有值。
请注意,由于某些其他原因,我不希望文本输入在服务器上运行,因此我不想添加runat =“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" />
答案 0 :(得分:3)
我认为与你想要做的事情有一点冲突。例如,在服务器上,您使用Request.Form [“”]来获取html输入元素,但是您通过id属性请求它。 Request.Form支持按索引和名称查找元素。
那你试过在html输入元素中添加一个name =“”吗?
答案 1 :(得分:1)
您可以通过两种方式使用javascript将值传递给codebehind。 1.单击图像按钮调用javascript。 在__EVENTARGUMENT中设置文本框值并调用__doPostback()。在页面加载中,您可以检查__EVENTARGUMENT中的值。
答案 2 :(得分:1)
您应该为输入标记添加名称属性,例如:
<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。
范围内的任何整数