在 .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 输入类型搜索的值的主要内容,如果未能解决你的问题,请参考以下文章

在gridview中回发后Javascript代码不会运行

在mvc中回发后自动完成功能不起作用

在 ASPX 中回发后按键不起作用

回发后 DataList 的 ASP.NET / DataItem 为空

回发后asp.net jquery脚本未运行

ASP.Net 文件上传导致使用触发器在更新面板中回发