我使用asp.net 4和c#。如何在頁面中添加腳本動態
我在Web From頁面中有一個Web用戶控件。 當我包含Web用戶控件時,我還希望通過編程方式在最終生成的頁面的標籤內包含一些腳本。
任何想法如何做到這一點? 也許ScriptManager可以提供幫助嗎?
請給我一個代碼樣本,我非常感謝你在這方面的感謝!
我使用asp.net 4和c#。如何在頁面中添加腳本動態
我在Web From頁面中有一個Web用戶控件。 當我包含Web用戶控件時,我還希望通過編程方式在最終生成的頁面的標籤內包含一些腳本。
任何想法如何做到這一點? 也許ScriptManager可以提供幫助嗎?
請給我一個代碼樣本,我非常感謝你在這方面的感謝!
彼得的回答將添加到頁面中,而不是頭部元素。看看這篇文章:
http://weblogs.asp.net/johnkatsiotis/archive/2008/08/08/add-scripts-to-head-dynamically.aspx
它提供了一個很好的清潔方法來添加腳本使用擴展方法head元素。
查看ClientScriptManager的RegisterClientScriptBlock。
從MSDN:
...
ClientScriptManager cs = Page.ClientScript;
// Check to see if the client script is already registered.
if (!cs.IsClientScriptBlockRegistered(csType, csName))
{
StringBuilder csText = new StringBuilder();
csText.Append("<script type=\"text/javascript\"> function DoClick() {");
csText.Append("Form1.Message.value='Text from client script.'} </");
csText.Append("script>");
cs.RegisterClientScriptBlock(csType, csName, csText.ToString());
}
...
感謝彼得我明白,我仍然有一個問題,使用一個母版頁,有線的東西是從一個沒有母版頁的網頁腳本工作正常,如果有一個mp我不能夠添加
...任何想法如何解決它?感謝您在這方面的時間。 – GibboK我意識到這是一個老問題,但有一個更簡單的方法。
試試這個:
Page.Header.Controls.Add(
new LiteralControl(
"<script>alert('Literal Added to <Head>.');</script>"
)
);
如果你想在<head>
的特定索引添加腳本可以使用
AddAt(index, new LiteralControl(...))
其中index 0等於的<head>
而且頂部,joelmdev在評論中提到,您需要在頭標記中添加runat="server"
<head id="head1" runat="server">
我應該提到,在服務器端代碼中動態添加任何內容的關鍵點之一是將runat =「server」添加到head元素。 – joelmdev