gpt4 book ai didi

asp.net - 无法从 HtmlInputHidden 的 Value 属性获取值

转载 作者:行者123 更新时间:2023-11-28 10:33:08 27 4
gpt4 key购买 nike

我有一个继承自 .NET 的 CompositeControl 类的自定义控件。该控件重写 CreateChildControls 以动态构建其子控件。我需要在客户端发生几个不同的 javascript 事件后发回页面。

为了实现此目的,我在页面上创建了两个隐藏控件,以便我可以使用 JavaScript 设置它们的值、提交页面并在服务器端读取值。这是我用来创建这两个隐藏的代码:

Protected Overrides Sub CreateChildControls()
hdEventName = New HiddenField()
Controls.Add(hdEventName)
hdEventName.ID = "hdEventName"
hdEventArgs = New HiddenField()
Controls.Add(hdEventArgs)
hdEventArgs.ID = "hdEventValue"
' other controls
' ...
End Sub

当发生 JavaScript 事件时,我设置两个隐藏的 value 属性并提交页面,如下所示:

hdEventName.value = 'EventName';
hdEventArgs.value = 'arg1,arg2';
document.forms[0].submit();

在控件的 OnLoad 方法中,我尝试检查 hdEventName 和 hdEventArgs 控件的 Value 属性,但它始终为空。但是,Page.Request.Form(hdEventName.UniqueID) 和 Page.Request.Form(hdEventArgs.UniqueID) 返回正确的值。页面回发后,标记中的实际 HTML 也会显示正确的值。

为什么 HtmlInputHiddens 的 Value 属性与客户端上显示的实际值断开连接?

更新看起来控件的属性是在 OnLoad 发生后的某个时间从表单加载的。因此,我可以通过将检查两个隐藏字段的代码移至 OnPreRender 方法中或将以下方法添加到我的代码中来解决我的问题 -

Private Sub Event_Handler(ByVal sender As Object, ByVal e As EventArgs)
Handles hdEventName.ValueChanged
' do stuff with hiddens
' ...

' reset the values back
hdEventName.Value = String.Empty
hdEventArgs.Value = String.Empty
End Sub

最佳答案

当页面回发时,没有任何内容可以将变量 hdEventName 链接到您之前创建的控件。您所做的类似于在类级别声明一个整数,并在创建子控件时将其设置为 5。没有任何东西可以在回发期间维持该变量中的该值。

如果您想获取对之前创建的控件的引用,则必须使用

hdEventName = CType(Page.FindControl("hdEventName") , HiddenField)

(我猜是这样)或者如果您只关心值,请请求。

关于asp.net - 无法从 HtmlInputHidden 的 Value 属性获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2457688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com