簡體   English   中英

從內容頁面訪問母版頁控件(html:輸入)不起作用

[英]Access Master Page control (html: Input) from Content Page doesn't work

我在母版頁上有一個輸入控件,其中存儲了 window 大小,該大小由運行 onload 的 javascript 返回。 我需要從內容頁面訪問這些控件,但我無法使其工作。 為了使事情更明顯和更容易,我使用輸入類型“文本”。 一旦一切正常,我會將其切換為“隱藏”類型

<input type="text" runat="server" id="hiddenInputW" />

在內容頁面上,我正在嘗試訪問 on page_load 事件中的控件。

HtmlInputText width = (HtmlInputText)Page.Master.FindControl("hiddenInputW");
HtmlInputText height = (HtmlInputText)Page.Master.FindControl("hiddenInputH");

另一個不起作用的選項是在 Masterpage 上創建此方法:

public string WindowWidth
{
    get
    {
        return Convert.ToString(hiddenInputW.Value);
    }
} 

並從內容頁面端訪問(在 page_load 中)

LabelTest.Text = Master.WindowWidth;

兩次數據都沒有傳遞到內容頁面。

我通過 LinkButton 和代碼訪問內容頁面:

Response.Redirect("ProcessMap.aspx");

我用來獲取 window 大小的 Javascript 是:

<script src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#hiddenInputW").val($(window).width());
$("#hiddenInputH").val($(window).height());
});
</script>

好的,如上所述,請閱讀我的評論。 問題是頁面首先在服務器上呈現,后面的代碼運行(但你還不能得到那些隱藏的字段值)。

然后頁面向下移動到瀏覽器,頁面被渲染並顯示在瀏覽器中,然后運行 js 代碼來設置/獲取/抓取屏幕分辨率內容並將這些值保存到隱藏字段中。

您實際上描述了行為:可以在第一次回發的頁面上獲取值。 那么我該如何解決這個問題

如前所述,任何按鈕單擊 - 您不僅限於第一次回發,但實際上任何和所有后續回發都將允許您獲取值。 是的,這包括使用鏈接按鈕。 因此,如果您樂於接受以某種形式的回發(包括鏈接按鈕)來獲取這些值,那很好。

如果您願意,您可以在不回發的情況下獲取這些值。 您要做的是代替第一次運行客戶端的 js 代碼,即 js 代碼可以運行並調用 web 方法,該方法將值傳遞給服務器,然后您可以說將值保存在 session() 中。 所以要么你在額外的回傳中獲取這些值(第一個,或者在第一頁加載之后的每個人,或者你運行那個 js 代碼並對服務器上的 web 方法進行 AJAX 調用,然后可以說將這些值保存到會議()。

所以,你有以上兩種選擇:

Get the values in the hidden fields on any postback that occurs on that page.

Use a AJAX call which does not require a post-back, but such calls of course don't 
do a post-back, so you can't get/grab/see in code behind the controls on the FIRST
page load since they are still sitting on the users desktop.
However a AJAX call does allow you to pass values to the server, and thus as a
result you can/could have this information available from that point on, which
of course means on ANY new post-back, which of course is quite much the first 
example and use case anyway!

所以即使我們確實使用了 AJAX 調用和 web 方法? 然后現在你的代碼可以看到/使用這些值,但你只能在一些用戶交互上運行這樣的代碼,無論如何都會導致回發!

(除非您只是想將屏幕大小和客戶端瀏覽器一次記錄到數據庫中 - 這當然表明 AJAX 調用會更好。這取決於您需要該信息的目的以及您將如何使用它? 如果您只是記錄此信息 - 那么是的,調用 AJAX 會更好。

如果您的應用程序需要此信息,那么使用 AJAX 調用幾乎沒有什么好處,因為您在該站點上運行的任何和所有代碼無論如何都將是回發的結果,所以現在我們還是回到正題。

簡單的問題是您無法在第一頁加載時獲得這些值。 但是話又說回來,這可能並不重要,並且將來對此類值的任何使用都將是回發的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM