按客户端 ID 服务器端 asp.net 获取禁用的文本框值

get a disabled textbox value by clientid server side asp.net

本文关键字:文本 获取 ID 客户端 服务器端 asp net      更新时间:2023-09-26

----------------------编辑

我想用更简单的术语来说,我试图做的是在发布表单时获取禁用文本框的发布值以在 SQL 插入语句中使用。


我需要获取一个被javascript禁用的文本框的值。最终,我将使用该值作为 SQL 插入语句的参数。 我已经读到我需要通过做这样的事情来获得价值:

Request.Form(EnterDateTXT.ClientID)

我的理解是,这只会返回控件 ID 的 HTML 呈现值。 如何实际检索文本框中文本的值?

ASP.NET VB是我正在使用的语言

文本框值作为字符串 = textboox1.text

如果你的表单通过 post 方法请求, 您可以通过语法获取表单控件的值

Request.Form(EnterDateTXT.ClientID)

在服务器端。

您可以参考链接 http://msdn.microsoft.com/en-us/library/ms525985%28v=vs.90%29.aspx

.NET 控件在回发时保持其状态,将有一个名为 EnterDateTXT 的TextBox对象可用:

Dim txt as String = EnterDateTXT.Text;

从表单中检索字段时,我们要做的是执行以下递归方法。这将处理只读和禁用的文本框。

由于此方法更新文本框的 Text 属性,因此无需其他代码关注控件的客户端状态:

''' <summary>
''' If a TextBox is marked as readonly, its value will not be updated into the server-side textbox control even though they are persisted.
''' This method copies the values from the Request.Form into textbox.text for all readonly textbox controls.
''' </summary>
''' <param name="cControls"></param>
''' <remarks></remarks>
Private Sub RetrieveReadOnlyTextBoxValues(ByVal cControls As ControlCollection)
    ' Exceptions are handled by the caller
    For Each oControl As Control In cControls
        If TypeOf oControl Is TextBox Then
            DirectCast(oControl, TextBox).Text = Request.Form(oControl.UniqueID)
        End If
        If oControl.HasControls Then
            Call RetrieveReadOnlyTextBoxValues(oControl.Controls)
        End If
    Next
End Sub

我能够发布文本框的值,同时仍然不允许用户更改文本框的文本的最佳方法是将 readonly 属性设置为 truePageLoad 上以编程方式。 这样,文本框被"禁用"到用户输入,但是.NET4 将发布由 javascript 设置的 texbox 值。 我能够通过访问文本框的 .text 属性来访问文本框值,就像我通常在服务器端一样。

我的理解是.NET保留回发的状态,如果文本框设置为enabled=falsereadonly=true则.NET假定这些cantrol的值无法修改,并且不会发布这些值。 通过设置加载时enabled=falsereadonly=true,回发状态允许您检索文本值

禁用的控件不一定会回发到服务器。 我认为这是浏览器,而不是服务器在这样做,但不是 100% 确定。 无论如何,如果您隐藏它,或将其设为只读,它应该可以正常工作。 在服务器上设置 Enabled="false" 并不总是意味着在客户端上禁用="禁用";有时,当您禁用控件时,它的呈现方式会大不相同。 这实际上取决于控制。

呵。