【问题标题】:Is postback mandatory for hidden fields to work?隐藏字段是否必须回发才能正常工作?
【发布时间】:2015-08-31 21:45:58
【问题描述】:

我不知道隐藏字段是否需要回发才能将其值发送或访问到服务器端? 例如:如果我们有一个隐藏字段 x 并且它在客户端的 Javascript 中设置为某个值。我们不能在服务器代码隐藏的这个字段设置在客户端后立即访问它而不回发吗?

【问题讨论】:

  • 使用 ajax 在服务器端访问它。每当您写入隐藏字段时,您都可以使用 ajax 调用服务器端函数。这是不进行完整回发的唯一方法
  • 是的,没关系。但我的问题是,隐藏字段必须回发才能达到目的,对吗?
  • 答案是肯定的。回发或使用 ajax 的部分回发是必须的,以便在服务器端可以访问隐藏的输入值

标签: javascript c# jquery asp.net hidden-field


【解决方案1】:

如果您只想从服务器端的隐藏字段中获取值而不发送发布请求,您可以发送 AJAX 调用。我相信我们需要您提供更多详细信息才能给出更具体的答案。

此外,您的回发工作可能会产生误导。 隐藏字段需要在标签内才能将其发送到服务器。如果您检查表单标签,您可以操作方法属性以使用 POST 或 GET 请求发送值。

【讨论】:

  • 好的,我正在为客户端的隐藏字段设置一个值。现在基于这个值,我对服务器事件的逻辑发生了变化。因此,我想知道隐藏字段是否必须使用 poatback
【解决方案2】:

如果您在客户端脚本中设置隐藏字段值,您还可以向服务器发送一个带有该值的 Ajax 请求,而不是从 HTML DOM 中获取该字段值。 示例:

function setValue(fieldValue){
   $("#hiddenField").val(fieldValue);
   $.get( "/setfield?value="+fieldValue, function( data ) {
       //handle response data if any
   });
}

请注意,这个特定的解决方案需要 JQuery,如果需要,您可以不使用它来实现相同的目标,但它更复杂。

【讨论】:

  • 我们不能使用这个设置任何实例变量。我需要设置一个实例变量/属性,以便我可以在特定于该 UserControl 的 Codebehind 的其他方法中使用它
  • 也许您可以将范围元素(UserControl 的实例 html DOM 根元素)传递给函数并执行以下操作:$(scopeElem).find('.hiddenField').val(fieldValue)然后将 UserControl 实例 ID 与 Ajax 请求一起发送
【解决方案3】:

隐藏字段将值存储在页面本身中,因此不使用服务器资源。

【讨论】:

  • 对不起,我没听懂“因此不要使用服务器资源”是什么意思。
  • 隐藏字段可用于在页面级别存储值。隐藏字段的值与其他控件的值一起在 HTTP 表单集合中发送。
  • 同意,但即使这样也需要回发。我想要一个没有回发的解决方案来设置一个实例变量,基于该变量的一些代码隐藏方法中的一些逻辑是依赖的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
相关资源
最近更新 更多