2014-09-25 47 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

相關問題