2009-11-24 3 views
0

У меня есть страница.aspx. Я хотел бы вставить в ответный поток страницы page.aspx скрипт < сценарий > после того, как он закончил запись своего вывода. Как я могу сделать эту форму в коде кода страницы?ASP.NET: добавление к HTTP-ответу

Если я это сделать:

protected void Page_Load(object sender, EventArgs e) 
    { 
     this.ClientScript.RegisterClientScriptInclude 
        ("dfasfds", this.Request.Path.Replace(".aspx", ".js")); 
    } 

Затем скрипт появляется в ответ на HTML, но не в конце.

Если я это сделать:

protected void Page_Load(object sender, EventArgs e) 
    { 
     this.Response.Flush(); 
     this.Response.Write(.../*my javascript*/...); 
    } 

< Затем сценарий > тег появляется в самом beginnning документа, на первой линии.

+0

посмотреть на http://stackoverflow.com/questions/1726962/how-to-add-script-codes-before-the-body-tag-asp-net/1727004#1727004 – kristian

ответ

0
string key = "MyScript"; 
string src = Request.Path.Replace(".aspx", ".js"); 
string script = "<script type=\"text/javascript\" src=\"" + src + "\"></script>"; 
ClientScript.RegisterStartupScript(GetType(), key, script); 
1

Содержимое вашей страницы не записывается в поток Response до этапа Render. Если вы вызываете Response.Flush() в Page_Load(), там еще ничего не должно скрываться.

Вместо этого вы можете попробовать вызвать Response.Write() из события Page_Unload(); Я уверен, что поток Response все еще жив в этот момент.

Однако результат этого будет заключаться в том, чтобы ваш скрипт появился после тега. Правильнее было бы сделать что-то вроде мастер-страницы и иметь там тег сценария в разметке или, возможно, вставить его с помощью пользовательского элемента управления.

0

Я не пробовал это, но я бы предположил, что вы выполняете запись на неправильной стадии жизненного цикла .NET. Page_Load происходит до отображения любого содержимого, поэтому ваш Write() будет вставлять текст в верхней части страницы. Я предполагаю, что вы хотите сделать это в PreRender:

«Используйте [PreRender], чтобы внести окончательные изменения в содержимое страницы или ее элементов управления до начала этапа рендеринга».

https://msdn.microsoft.com/en-us/library/ms178472.aspx

Смежные вопросы