Visual studio 2013 Request.form不';t在代码隐藏中使用Visual Studio 2013返回值
我想我快瞎了。。。。!以下代码有什么问题? 使用Visual Studio 2013,“searchBox”不会返回值,但使用VS 2008时效果良好 代码隐藏Visual studio 2013 Request.form不';t在代码隐藏中使用Visual Studio 2013返回值,visual-studio-2013,code-behind,textinput,asp.net-4.5,Visual Studio 2013,Code Behind,Textinput,Asp.net 4.5,我想我快瞎了。。。。!以下代码有什么问题? 使用Visual Studio 2013,“searchBox”不会返回值,但使用VS 2008时效果良好 代码隐藏 Partial Class _Default Inherits Page Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Response.Write(Re
Partial Class _Default
Inherits Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Response.Write(Request.Form("searchBox"))
End Sub
末级
HTML页面
<%@ Page validateRequest="false" Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<asp:TextBox ID="SearchBox" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Search" />
</asp:Content>
它也不能与VS2008一起使用。由于它是一个服务器控件,控件的实际客户端id将不是
searchbox
,而是该控件的所有父id的串联。类似于ctl00\u somePanel\u someContainer\u SearchBox
Request.Form
将包含原始html表单控件的值,包括客户端版本的搜索框生成的值及其实际生成的id
要解决您的问题,您可以:
- 阅读
SearchBox.Text
属性,而不是阅读表单
对象(可能是最好的选择)
- 将服务器控件替换为纯客户端控件(
- 使用
CliendIDMode
修复控件ID,但我认为这是一个糟糕的选择
最简单的方法是在您想要使用请求时使用。表单(“搜索框”)的设置如下:
<asp:TextBox ID="SearchBox" clientmode="Static" runat="server"></asp:TextBox>
这将强制使用您设置的名称“SearchBox”来创建对象,而不是“ctl00\u somePanel\u someContainer\u SearchBox”这个名称只有它知道如何解释
这不是访问对象的最佳方式,但这会让您按照您现在的方式进行操作。很高兴它解决了您的问题。这正是ASP.Net和服务器控制的原理。这模仿了windows应用程序开发,允许开发人员读/写控件属性。ASP.Net引擎(特别是viewstate管理)将处理重建控件的所有魔法。