![](/img/trans.png)
[英]How to access master page control in child .aspx page (in javascript)
[英]How to access javascript variable in .net master page
我需要啟用.net母版頁中存在的腳本,僅在使用該母版頁的選定html頁中。 可以通過在需要此腳本的html頁面的javascript中聲明一個變量並將變量設置為某個值來實現,以便僅當變量為NotNullorEmpty時才能在母版頁中啟用腳本? 有人知道這是否有效嗎? 如果是這樣,如何在html中獲取javascript變量,進入.net主頁?
我可以想到兩種方法。
第一個將變量分配給隱藏的輸入字段。 可以在Request.Form中訪問。
HTML
<input type="hidden" value="your value" name="Hidden1" id="Hidden1"/>
JavaScript的
document.getElementById('Hidden1').value = "an other value";
C#
var myValue = Request.Form["Hidden1"];
第二種是將變量保存到cookie中,該cookie可以在Request.Cookies中訪問。
var myValue = Response.Cookies["Cookie1"].Value;
我所見過的最靈活的形式是將JSON對象直接作為腳本呈現到頁面(添加您可能還需要添加的任何其他腳本),然后使javascript代碼在表單上為JSON數據填充一個隱藏字段,以供提交服務器解析。
以下是基本步驟:
JavaScriptSerializer
.NET類。) script
標簽及其內容填充LiteralControl
。 (這在OnPreRender步驟中效果很好,但是您可以在其他位置進行。) JavaScriptSerializer
從提交的對象中讀取值。 您基本上想要做的是測試javascript。
有幾種方法可以做到這一點,但是我會同時使用服務器端和客戶端Cookie。
在您的global.asax的onbeginrequest中,測試“ js-test-s”的服務器端cookie
[HTML]\n [頭]\n [元刷新標簽設置為1秒/]\n [腳本設置“ js-test-c” cookie,然后強制刷新/]\n [/頭]\n [機構] [/體]\n [HTML]
警告:您可能要存儲原始請求詳細信息,並在禁用cookie的情況下重定向到其他位置。
我可能無法正確理解問題,但據我所知,最簡單的方法是在母版頁上創建一個屬性,然后在需要執行腳本的所有頁面上設置它:
在母版頁中
public bool EnableScript
{
set
{
if (value == true)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "startup", "alert('test');", true);
}
}
}
在需要運行使用當前母版頁的javascript的所有頁面中:
protected void Page_Load(object sender, EventArgs e)
{
this.Master.EnableScript = true;
}
如果您必須在每個頁面上輸出JavaScript,即使是在一次不執行的頁面上(為什么?),也可以將其添加為函數,然后在屬性內添加代碼以調用該函數,並將屬性設置為在需要執行JavaScript的所有頁面上為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.