gpt4 book ai didi

c# - 从 JavaScript 设置的 HiddenField 不持久

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:42 27 4
gpt4 key购买 nike

我有一个 UserControl,其中包含在 SharePoint 解决方案的 ASPX 页面上引用的 HiddenField、UpLoad 控件和 DropDownList。控件的标记是:

<ig:WebDropDown ID="WebDropDownDocumentType" runat="server" Width="135px" DataSourceID="DataSourceDocumentType" DataKeyFields="Id" ValueField="Id" TextField="Name" AutoPostBack="False" ClientEvents-SelectionChanged="WebDropDownDocumentType_SelectionChanged">
<asp:HiddenField ID="hdnDocumentType" runat="server" />
<ig:WebUpload ID="WebUploadSupportingDocuments" runat="server" ProgressUrl="/WebUploadStatusHandler.ashx" Height="100px" MaxSimultaneousFilesUploads="1" Width="100px" OnUploadFinished="WebUploadSupportingDocuments_UploadFinished" AutoStartUpload="True" OnUploadStarting="WebUploadSupportingDocuments_UploadStarting" >

当为 DropDownList 更改所选索引时,将调用 javascript 函数来设置 HiddenField 值。我还添加了一个警报来验证 HiddenField 是否包含该值并且它确实显示了预期值。这是函数:

function WebDropDownDocumentType_SelectionChanged(sender, e) {
var wddObject = sender,
selectedIndex = wddObject.get_selectedItemIndex(), value;
value = wddObject.get_items().getItem(selectedIndex).get_value();
document.getElementById('<%=hdnDocumentType.ClientID %>').value = value;
alert(document.getElementById('<%=hdnDocumentType.ClientID %>').value);
}

从 DropDownList 中选择一个项目后,我看到函数调用并验证警报中的值是否正确。然后单击按钮选择要上传的文件,UploadFinished 事件将触发。当我在 UploadFinished 事件中设置断点并检查 HiddenField 的值而不是预期值时,它是一个空字符串。

string sDocumentType = hdnDocumentType.Value;

如果我不关闭页面并上传另一个文件,它就会在下拉列表中显示所选项目的值。如果我然后从下拉列表中选择另一个项目并上传另一个文件,它有以前的选择,然后在下一个文件上传下一个选择。所以它第一次是一个空字符串,然后我上传的每个文件后面都有一个选择。

我不确定为什么该值没有持久存在,并且正在寻找有关如何解决该问题的建议。

最佳答案

问题的原因可能是上传组件。它可以使用 iframe 将文件上传到服务器(例如,Ajax Control Toolkit 和其他一些上传组件的异步文件上传就是这样工作的)。这可能是隐藏字段为空的问题的原因(因为请求是从 iframe 完成的)。如果是这种情况,那么您需要处理客户端事件,该事件将在上传完成时通知您(当然,如果此组件支持它们)并手动执行回发(或 ajax 请求)以执行所需的操作。

关于c# - 从 JavaScript 设置的 HiddenField 不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13535979/

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