繁体   English   中英

获取在document.ready中设置的隐藏字段的值,该值位于asp.net代码后面

[英]Grab hidden field's value that is set in document.ready in asp.net code behind

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

谢谢!

是的,那是不可能的。

(目前至少使用已知技术。您将需要一台时间机器来获取该数据。)

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

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

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

因此,上面的海报是正确的,但是有很多方法可以执行您想要的操作。 例如,更改值后立即提交回发信息。 像下面一样(还有很多其他选择)。

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM