【问题标题】:HiddenField value modified by javascript is not posted backjavascript修改的HiddenField值不回发
【发布时间】:2010-09-13 23:11:40
【问题描述】:

这很奇怪,但我一直在我的代码中使用这种方法:我有下拉列表,我使用回调填充客户端,因此我无法从后面的代码中访问它们选择的值和使用隐藏字段在其中存储选定的值。我在回发时检索隐藏字段的值没有问题,但突然间它停止工作并且始终为空白,即使客户端的值存在。 有什么想法吗?

附:我不会在回发时设置或重置隐藏字段。

【问题讨论】:

  • 听起来它应该可以工作 - 你能发布一个导致问题的代码的最小示例吗?
  • aspx: js: $("#").val($(this). val()); aspx.cs: if (!string.IsNullOrEmpty(hfTechID.Value)) { } 我确实在回发之前检查按钮单击的值,它就在那里。不太确定是什么原因造成的
  • 但是相同的代码在不同的页面上工作!

标签: javascript postback


【解决方案1】:

好吧,如果有人想知道哪里出了问题:似乎有一些与 jQuery 相关的东西。 问题是 DropDownLists 和隐藏字段以及导致回发的按钮位于 jQuery UI 对话框中,该对话框在页面加载时启动,无需打开并附加到表单。除了这个对话框之外,我正在初始化另一个对话框并附加到表单,但由于某种原因,第一个附加的对话框在回发工作时表现出奇怪的行为,但隐藏字段不保留该值。如果我不将第二个对话框附加到表单中,一切都会按预期进行。无法真正判断附加第二个对话框可能会导致这种奇怪行为的原因。

P.S 如果我颠倒这两个对话框的附加顺序,它工作得很好......奇怪!

【讨论】:

  • 遇到了同样的问题。当我将所有隐藏字段移出对话框时,它开始工作。
  • 我也遇到了同样的问题。我相信根本原因是 jQueryUI 将对话框附加到 BODY 标签而不是 FORM 标签,.Net 需要它。我通过分离 jQueryUI 对话框和覆盖并将它们重新附加到对话框的打开处理程序上的表单来解决它:
  • 打开:函数(事件,用户界面){ var $up = $('[id$=MainUpdatePanel]'); var $firstForm = $('form:first'); if ($up.length) { $up.append($('.ui-dialog, .ui-widget-overlay').detach()); } else { $firstForm.append($('.ui-dialog, .ui-widget-overlay').detach()); } }
【解决方案2】:

使用 .NET?

当动态添加值时,后端没有任何线索。您需要使用Request.Form 来获取回传值,就像老式的 ASP 天一样。

【讨论】:

    猜你喜欢
    • 2011-09-15
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    相关资源
    最近更新 更多