2014-09-25 45 views
0

我想使用hiddenField来获取监视器的宽度和长度值。无法在服务器端的页面加载事件上访问值

但它只有当我点击按钮后,我可以访问hfClientScreenHeight.Value和hfclientScreenWidth.Value。否则,我得到空。

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

<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; 
} 

回答

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; 
+0

我想动态设置宽度,高度。一旦用户打开网页,JavaScript将被执行。 ASP.net可以在page_load事件上分配一个新的宽度,高度值。 – 2014-10-22 05:36:24

+0

你不能那样做。你必须回来,因为ASP.Net不能得到的价值,除非你这样做。 – 2014-10-22 12:34:11

+0

谢谢!我知道了 :) – 2014-10-23 07:35:10

相关问题