在 .NET 中回发后从后面的代码中获取 HTML5 输入类型搜索的值
Posted
技术标签:
【中文标题】在 .NET 中回发后从后面的代码中获取 HTML5 输入类型搜索的值【英文标题】:Get value of HTML5 input type search from code behind after postback in .NET 【发布时间】:2019-12-15 11:35:17 【问题描述】:我正在我的网页中创建一个用于搜索的示例文本框(我正在使用 VB):
Dim txtSearchFilter As New htmlGenericControl("input")
With txtSearchFilter
.ID = "txtSearchFilter"
.Attributes.Add("placeholder","Filter")
.Attributes.Add("type","search")
.Attributes.Add("maxlength","80")
End With
太好了,因为这是 HTML5 样式框,它具有一些有用的功能,例如框右侧的“x”可以清除文本条目。但是,从后面的代码中,我无法检索输入的文本。我试过了:
txtSearchFilter.InnerText
txtSearchFilter.InnerHtml
txtSearchFilter.Attributes("value")
Request.Form("txtSearchFilter")
但这些都不起作用。有没有办法获得价值?
P.S.,SO 阻止我选择 HTML5 标记,而是放入 HTML 标记,即使我选择了 HTML5 标记。
【问题讨论】:
最主要的是,你永远无法从后面的代码中获取 html 控件的值,它们必须是服务器控件。几个想法:将runat="server"
添加到控件中(不知道这是否可行,但我知道如果将其添加到标记中它确实可行);或创建一个服务器控件 (TextBox txt = new TextBox();
)。
【参考方案1】:
为输入元素添加一个name属性。
txtSearchFilter.Attributes.Add("name", "txtSearchFilter")
然后在回发时,您可以通过Request.Form(name_attribute)
检索值。基于上述代码的示例:
Dim value as String = Request.Form("txtSearchFilter")
【讨论】:
谢谢 - 效果很好。我认为像这样设置 ID:txtSearchFilter.ID = "txtSearchFilter",会起作用,但它没有。 name 属性成功了。以上是关于在 .NET 中回发后从后面的代码中获取 HTML5 输入类型搜索的值的主要内容,如果未能解决你的问题,请参考以下文章