2010-10-06 63 views
1

我打電話的函數,而裏面Homescroll.ascx.cs從Homescroll.ascx如何更新面板內寫的Response.Write

,所以我就寫了Homescroll.ascx作爲 <%的Response.Write(滾動( )); %>

,但是這一切都是在更新面板,和我收到的錯誤。 所以是他們從homescroll.ascx調用函數homescroll.ascx.cs,而不是response.write()的任何其他方式。

+1

有什麼'scroll'方法的可見性,什麼是'Exception'文本? (或者更好的是,你能告訴我們堆棧跟蹤嗎?) – 2010-10-06 13:21:58

回答

1

如何使用語法 - <%= scroll() %>

+0

<%=只是Response.Write的簡寫,並且如果R.W不起作用則不太可能解決問題。 – annakata 2010-10-06 13:37:05

0

需要更多的資料,但我會假設滾動將是一個客戶端功能,僅僅通過它的名字,你應該使用一個ScriptManager這樣的:

ScriptManager.RegisterClientScriptBlock(this,typeof(Page),"scrollScript","scroll();",true); 

看到http://msdn.microsoft.com/en-us/library/bb350750.aspx獲取更多信息。如果你不想從後面的代碼中調用它,那麼根本不需要<%>或respoonse.write。只需將其包含在腳本標記中,並將其類型設置爲text/javascript。

4

<%= scroll() %>將在UpdatePanel中工作,但<% Response.Write(scroll()) %>不會。

流行的看法相反,<%= %>顯示錶達式不正是意味着Response.Write,並不像他們在ASP經典一樣。它們都在渲染階段執行。不同的是,顯示錶達式寫入HtmlTextWriter並不直接傳遞給渲染函數—到Response對象。通常這沒有任何區別。除了當您使用UpdatePanel時,它需要捕獲您的ContentTemplate的輸出,以便它可以以其特殊格式對輸出進行編碼。如果直接調用Response.Write,則會繞過UpdatePanel執行的編碼並弄亂響應,以致無法在客戶端對其進行分析。

,當你這樣做是有幫助的異常時發生的錯誤:

Sys.WebForms.PageRequestManagerParserErrorException: 從服務器 收到的消息無法解析。對於 此錯誤的常見原因是當響應 通過電話修改的Response.Write(), 響應濾波器,的HttpModules,或 服務器啓用跟蹤。

UpdatePanel provides workarounds的作者在他的博客上。

0

我用這個問題的一個簡單的解決方法是調用jQuery函數並且調用append()而不是調用Response.Write()。例如,假設我想更新裏面的UpdatePanel一些HTML文本並改變其文字,我會做這樣的事情:

隨着Response.Write(),這將是這樣簡單:

Response.Write("[TextToBeAddedToHTML]"); 

但隨着jQuery的,它的有點複雜,你必須包括jQuery庫到HTML頁面:

ScriptManager.RegisterStartupScript(this, GetType(), "TextUpdate", "$(\"#[ID_OF_HTML_Element]\").append(\"<p>" + [TextToBeAddedToHTML] + "</p>\");", true); 
0
System.Text.StringBuilder sb = new System.Text.StringBuilder(); 

sb.Append(@"<script type='text/javascript'>"); 
sb.Append("alert('Usuario agregado Correctamente.');");  
sb.Append(@"</script>"); 
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AddHideModalScript", sb.ToString(), false);