2014-05-23 43 views
2

我希望能夠動態地(在頁面加載)決定將其設置爲Visible=false,所以它不會被渲染。我試過runat=server但這隻適用於虛擬路徑。如何動態地不呈現腳本標記?

+0

是否要從源代碼中刪除腳本標記? – Adil

+0

@Adil有時候我需要它,有時候我不想渲染它。這隻會在運行時才知道。 – ispiro

+0

檢查此鏈接http://stackoverflow.com/questions/19414829/removing-script-tags-from-html-pages-using-c-sharp – Hassan

回答

2

您可以使用ClientScriptManager.RegisterClientScriptBlockClientScriptManager.RegisterStartupScript來有條件地添加腳本。

if (condition) 
{  
    String csname2 = "ButtonClickScript"; 
    Type cstype = this.GetType(); 
    StringBuilder cstext2 = new StringBuilder(); 
    cstext2.Append("<script type=\"text/javascript\"> function DoClick() {"); 
    cstext2.Append("Form1.Message.value='Text from client script.'} </"); 
    cstext2.Append("script>"); 
    cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false); 
} 

如果您有腳本,是不小的,那麼你可以把腳本中一些js文件和使用ClientScriptManager.RegisterClientScriptInclude

if (condition) 
{ 
    ClientScriptManager cs = Page.ClientScript; 
    cs.RegisterClientScriptInclude("ScriptKey", "ScriptURLToInclude"); 
} 
+0

謝謝。看起來很有希望。 – ispiro

+0

如果您要添加'script'標籤,爲什麼最後一個參數是'false'? – Andrei

+0

由於腳本標記存在於傳遞給RegisterClientScriptBlock – Adil

2

在ASP.NET標記語言,你可以操縱的渲染任何任意內容。這就是說只在某些條件下渲染腳本標記應該如此簡單:

<% if (shouldRenderScriptTag) { %> 
    <script src="..." /> 
<% } %> 
+0

+1。我仍然無法決定接受哪個答案。你回答了實際問題,但Adil回答了這個根本問題。你們都值得信任。哦,好吧,在某些時候我必須決定:)再次感謝。 – ispiro

+0

@ispiro - 字面上的答案非常直截了當,我認爲這對社區來說是極其有用的。如果Adil的回答可以幫助你更好地設計代碼,我會爲他的。 – chiccodoro