【问题标题】:cannot access value on pageload event on ther server-side无法访问服务器端页面加载事件的值
【发布时间】:2014-09-25 02:09:04
【问题描述】:

我想使用 hiddenField 来获取显示器的宽度和长度值。

但它只有在我单击按钮后才有效,我可以访问 hfClientScreenHeight.Value 和 hfclientScreenWidth.Value。否则,我会得到 null。

输入值在服务器端似乎很好。我该如何解决这个问题?谢谢!

<asp:Content ID="Content1" ContentPlaceHolderID="cph_Head" Runat="Server">
<script type="text/javascript" language="javascript">
    function GetResolution() {
        document.getElementById("clientScreenWidth").value = screen.width;
        document.getElementById("clientScreenHeight").value = screen.height;
        document.getElementById("cph_Body_hfClientScreenHeight").value = screen.height;
        document.getElementById("cph_Body_hfClientScreenWidth").value = screen.weight;
    }
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cph_Body" Runat="Server">
    <body onload="GetResolution();">
    <asp:HiddenField ID="hfClientScreenHeight" runat="server" />
    <asp:HiddenField ID="hfclientScreenWidth" runat="server" />
    <asp:Button ID="test" Width="50" runat="server"/>
    <input type="text"  name="clientScreenHeight" id="clientScreenHeight" />
    <input type="text"  name="clientScreenWidth" id="clientScreenWidth" />
</asp:Content>

aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    var hh = hfClientScreenHeight.Value;
    var ww = hfclientScreenWidth.Value;
}

【问题讨论】:

    标签: asp.net pageload hidden-field


    【解决方案1】:

    应该是这样的。代码隐藏无法访问它们,因为它只是将它们提供给客户端。您必须通过回发将数据发送回页面,以便页面实际获取它。您必须将此数据发送回服务器。这方面有很多话题。您可以尝试通过 ajax 调用,但这并不能为页面带来任何好处,因为您必须使用静态调用的 Web 服务。您也可以使用更新面板。

    我在http://techbrij.com/browser-height-width-server-responsive-design-asp-net 找到了一篇文章,它可能有一个有趣的解决方案。

    但不要依赖这个。最好使用响应式设计框架来协助处理浏览器上不同的视口大小。获得宽度和高度需要的工作比它值得做的更多,尤其是在所有设备上尝试这样做,响应式框架为您提供了更多选择。有一个大屏幕,然后可以显示页面的特定部分并隐藏另一个部分。小屏幕也是如此,以有利于屏幕的方式显示内容并隐藏更大视口的版本。

    提示:不要在脚本中硬编码服务器控件的客户端 ID。它使它变得脆弱,因为一旦您移动该控件,客户端 ID 就会更改(或者如果您将页面放在母版页中,等等)。相反,只需使用 response.write 速记来获取唯一的客户端 ID,如下所示:

    document.getElementById("<%= hfClientScreenWidth.ClientID %>").value = screen.weight;
    

    【讨论】:

    • 我想动态设置宽度、高度。一旦用户打开网页,就会执行 JavaScript。 ASP.net 可以在 page_load 事件上分配新的宽度、高度值。
    • 你不能那样做。您必须回帖,因为除非您这样做,否则 ASP.Net 无法获取该值。
    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2013-03-20
    • 1970-01-01
    • 2015-04-14
    相关资源
    最近更新 更多