【问题标题】:Grab hidden field's value that is set in document.ready in asp.net code behind在 asp.net 代码后面的 document.ready 中获取隐藏字段的值
【发布时间】:2014-11-14 16:10:33
【问题描述】:

我需要在后面的代码中访问隐藏字段值,通常这很容易,但是这个变量是在 jQuery 的 document.ready 事件期间设置的,我需要在页面加载时访问它......到目前为止,我已经尝试过 Page_Load , Page_LoadComplete , Init 和 Prerender 没有运气。这只是一项不可能完成的任务吗?

谢谢!

【问题讨论】:

  • 您可以使用 ajax 将值发送到您的服务器,但最早的实际机会是在页面加载完成后立即发生。

标签: javascript c# jquery asp.net


【解决方案1】:

是的,这是不可能的。

(至少在目前已知技术的情况下。您需要一台时间机器来获取该数据。)

服务器上的所有代码都会运行以创建浏览器的页面。服务器代码完成后,页面被发送到浏览器,浏览器解析页面。解析整个页面时,会发生ready 事件。

因此,所有服务器代码在页面发送到浏览器之前运行,所有 Javascript 代码在页面发送到浏览器之后运行。

(从技术上讲,在服务器代码完成之前在浏览器中启动 Javascript 是可行的,但这意味着您需要关闭服务器上的响应缓冲并完全自行处理响应(即不是 Webforms 或 MVC) , 并且 Javascript 需要在页面开始加载时运行,而不是在 ready 事件中。此外,您需要服务器上的另一个页面,Javascript 可以请求将数据发送回服务器,并且该页面必须运行无会话这样web服务器就可以和当前页面并行处理。另外,你需要在服务器上设置一些静态类来存储数据,这样当前页面到达时就可以取到它,而你必须为 Javascript 可以发回的请求创建某种标识符,以确定哪个请求应该获取数据,因为用于发送数据的页面是无会话的。因此,即使 可能做一些与你想要的类似的事情,这太复杂了被认为是实用的。)

【讨论】:

  • 谢谢,我就是这么想的 :)
【解决方案2】:

所以上面的海报是正确的,但是有很多方法可以做你想做的事。例如,在更改值后立即提交回帖。如下所示(还有许多其他替代方法)。

public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var test = HiddenField1.Value;

            if (test != "")
                HiddenField1.Value = "test finished";
        }
    }

<form id="form1" runat="server">

        <asp:HiddenField ID="HiddenField1" runat="server" />

        <script type="text/javascript">
            $(document).ready(function () {


                if ($('#HiddenField1').val() !== 'test finished') {
                    $('#HiddenField1').val('test');
                    $("#form1").submit();
                }

            });
        </script>

    </form>

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    相关资源
    最近更新 更多