c# - Asp:Label 从本地主机上的 HiddenField 获取值,但不是在实时版本上
问题描述
我正在asp.net 中开发一个网站。在其中一页上,我初始化了一个转发器,其中包含多个 HiddenFields。
在转发器之外,在我的页面加载期间,我使用从那些隐藏字段中获取的文本值在特定的转发器项中初始化标签。在 localhost 中进行测试不会导致任何问题。然而,在实时版本中,我注意到其中一个标签没有显示任何值,尽管链接到它的 HiddenField 确实保存了想要的值。
以下是相关页面的代码示例:
aspx:
<form id="detailForm" runat="server">
<asp:ScriptManager ID="ScriptManagerGlobal" runat="server" EnableScriptGlobalization="true" />
<table>
<tr>
<th>Code d'Activation</th>
<td>
<asp:Label ID="L_Code_Activation" runat="server" />
</td>
</tr>
<tr>
<th>Dernière action </th>
<td>
<asp:Label ID="L_Libelle_Actuel" runat="server" />
</td>
</tr>
</table>
<br />
<asp:UpdatePanel ID="UP_KSS" runat="server" UpdateMode="Always">
<ContentTemplate>
<table>
<asp:Repeater ID="RepeaterContainer" runat="server">
<HeaderTemplate>
<tr>
<th>Date de Requète
</th>
<th>Action
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<asp:HiddenField ID="HF_Id_kss_container" runat="server" Value='<%#Eval("id_kss_container") %>' />
<tr>
<td>
<asp:HiddenField runat="server" ID="CodeActivationHidden" Value='<%# Eval("CodeActivation") %>' />
<asp:Label ID="L_DateRequest" runat="server" Text='<%# LaDate(Eval("DateRequest")) %>' />
</td>
<td>
<asp:HiddenField runat="server" ID="LibelleHidden" Value='<%# (LOperation(Eval("Libelle"))) %>' />
<asp:Label ID="L_Libelle" runat="server" Text='<%#(LOperation(Eval("Libelle"))) %>' />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</form>
(请注意:“LOOperation”和“LaDate”方法只是改变了“Eval”返回值的格式。它们不应该影响其余的代码。)
.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
initRepeaterContainer(); //
initLabels();
}
protected void initLabels()
{
// L_Libelle_Actuel
Label lblLibelleActuel = (Label)detailForm.FindControl("L_Libelle_Actuel");
HiddenField hfLibelleHidden = (HiddenField)(RepeaterContainer.Items[0].FindControl("LibelleHidden"));
lblLibelleActuel.Text = hfLibelleHidden.Value;
// L_Code_Activation
Label lblCodeActivation = (Label)detailForm.FindControl("L_Code_Activation");
HiddenField hfCodeActivationHidden = (HiddenField)(RepeaterContainer.Items[(RepeaterContainer.Items.Count)-1].FindControl("CodeActivationHidden"));
lblCodeActivation.Text = hfCodeActivationHidden.Value;
}
这是问题所在:在 localhost 中运行时,页面运行良好,并且此处的两个标签都显示了预期值。但是,在直播网站上运行时,只有“L_Libelle_Actuel”标签显示正确的值。
“L_Code_Activation”标签仅转换为 id="L_Code_Activation" 的空范围。奇怪的是,在检查结果页面时,我可以看到预期值存在于链接到该标签的 Hiddenfield 中。
有谁知道为什么会发生这个问题,以及为什么它不会在 localhost 上发生?我进行了广泛的搜索,但没有看到任何人遇到同样的问题,也无法在本地环境中重现它。如果您知道是什么原因造成的,您知道如何解决吗?
谢谢,祝你有美好的一天。
编辑:忘了说,虽然这似乎是一件小事,但在查看我的导航器的开发控制台时,我没有收到任何错误或警告。就像标签从未初始化过一样。
编辑2:这是结果的样子。我用“[value]”替换了实际数据,因为它是明智的信息。
这是两种情况下生成的标签和隐藏字段的样子。我再次用“[value]”替换了预期的数据。
本地主机:
<span id="L_Code_Activation">[value]</span>
...
<input type="hidden" name="RepeaterContainer$ctl01$CodeActivationHidden" id="RepeaterContainer_CodeActivationHidden_0" value="[value]">
直播网站:
<span id="L_Code_Activation"></span>
...
<input type="hidden" name="RepeaterContainer$ctl01$CodeActivationHidden" id="RepeaterContainer_CodeActivationHidden_0" value="[value]">
编辑3:问题实际上来自服务器本身,而不是代码。我应该先检查那里,对不起...
解决方案
为什么不在pageload 上发出ajax 请求?在服务器端更新数据并不总是一个好主意。
所以我建议你这样做: - 在你的 aspx.cs 文件中,添加一个函数来初始化模型并返回模型的 JSON 流。- 在您的 js 文件中添加一个将调用您的函数(aspx.cs)的 ajax 请求。通过它的结果,您应该能够刷新您的组件。
推荐阅读
- vaadin - 无法解析符号:import org.eclipse.jetty.server.Server;
- java - 如何将我的 API JSON 数据显示到回收站视图中
- google-bigquery - 在 BigQuery 中计算当前用户返回率
- ruby-on-rails - 如何在 RSpec 中存根 Rails 秘密?
- reactjs - 使用 typescript baseurl 和 paths 会破坏 React-Router
- python - 平台之间 Python 打包二进制数据大小的差异?
- angular - Angular 7 不会缩小 html、js、css 文件
- rxjs - Rxjs:取决于可观察的值,使用 mergeMap 或 switchMap 进行管道
- java - 为什么当它应该返回 10 时返回 0?
- bash - 在 BASH 脚本中搜索/查找文件的最佳/优化方式