2012-10-10 26 views
0

我有一個引導問題,我希望你們中的一個人可能有解決方案。在ASP.NET Webforms中使用部分

我已將所有JavaScript引用放在主頁面的底部。這通常工作正常,但現在我有一個ASCX控件,它需要添加一些JavaScript頁腳(模塊的初始化)。我無法從母版頁初始化模塊的原因是我需要從我的代碼隱藏文件中獲取一些屬性。

在ASP.NET MVC中,我將使用部分將數據從usercontrol注入到masterpage中的某個部分,但這在ASP.NET Webforms 4中甚至可能實現嗎?

回答

0

不,這個概念在WebForms中不可用。

完成所描述的一種方法是使用<%= %>語法並將服務器屬性的值發送到客戶端(HTML輸出)。在你的ASCX控制你可以有以下標記:

<script type="text/javascript"> 
var clientProperty = <%= MyServerProperty %>; 
</script> 

ASP.NET Web窗體將取代MyServerProperty,當它呈現在網頁上面的值,然後就可以在從腳本訪問clientProperty作爲一個全局變量母版。

另一種方法是使用Hidden field並在服務器上設置其值。它將呈現爲<input type="hidden">,其值可以通過ID從任何腳本獲取。

第三個選項是僅從ASCX控件(當它有意義時)加載實際的客戶端腳本,而不是放入主頁面(當它將被加載到站點中的任何地方時)。

1

您可以添加這樣的事情你的母版頁的底部:

<asp:PlaceHolder runat="server" ID="javascriptSection" /> 

然後在你的頁面的背後或在<% %>標籤代碼:

var scriptTag = new HtmlGenericControl("script"); 

scriptTag.Attributes["type"] = "text/javascript"; 

scriptTag.InnerHtml = @"function() { ... }"; 

var javascriptSection = this.Page.Master.FindControl("javascriptSection"); 

if (javascriptSection != null) 
    javascriptSection.Controls.Add(scriptTag);