2011-08-22 72 views
3

我想將原始javascript輸出爲aspx響應。使用的Response.Write失敗,因爲使用JavaScript一起,它轉儲所有其他asp.net的東西在頁面,例如:如何在asp.net中輸出原始javascript

... 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTAxODk4MjA3OWRk9jVlI2KaQPiVjEC+P0OPYGV74vKjJQZuwD6OaHhb+U0=" /> 
... 

反正是有根本輸出的原始文本輸出,而不必所有的在頁面上的其他asp.net的東西?我想如下使用頁面:

<script src="mypage.aspx"></script> 

凡本頁面包含此激發了aspx頁面的JavaScript,但是Chrome不喜歡它的原因很明顯...它預計的JavaScript,但它是獲得JavaScript +標記+ .NET注入的東西。

請不要評論我爲什麼要這樣做!處理非常具體的問題。

回答

6

使用.ashx Generic Handler。然後,您可以設置context.Response.ContentType = "text/javascript"並只使用Response.Write

+0

通用處理器被用於這些情況。 – Brownman98

+0

首選ashx,如果您必須使用aspx,您也可以調用Response.Clear()。 –

+0

感謝百萬...這工作。然而,我有我的ashx調用webmethods的JavaScript,它不是很工作,但彈出工程沒有問題...仍然需要熨出一些細節... – Zunandi

1

使用WebForms這將非常困難。我能想到的最好方法是將MVC添加到您的項目中,以便您可以更好地控制輸出。 (是的,MVC和WebForms可以在同一個項目中共存)。

這樣,您仍然可以利用.aspx語法(或更酷的Razor語法)生成JavaScript文件,而無需WebForms將其所有煩人的內容添加到輸出中。

3

我不知道,我明白你的問題,但你可以嘗試這樣的:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "registerSomething", "doSomething = function(){ ... }", true); 
3

您也可以禁用視圖狀態,等...並刪除一切從aspx文件。

<%@Page ... EnableViewState="false" EnableViewStateMac="false"%> 

在aspx文件中不包含其他內容,沒有runat = server任何東西。然後使用response.write在代碼隱藏中編寫JavaScript。

+0

我同意上面的Joey:ASHX是最常見/可接受的做你想做的方式。但是,如果您出於某種原因需要在ASPX頁面內執行此操作,則此答案(來自aepheus)應該有所幫助。 – mikemanne

0

我需要這個,這是我的解決方案:

創建的文件script.aspx和含量爲直JavaScript和頁面的標題指令。然後在JavaScript我能夠將呼叫接入到靜態方法:

<%@ Page Language="C#" ContentType="text/javascript" %> 

function someFunction() 
{ 
    var someVar; 

    someVar="<%= MyClass.MyMethod() %>"; 
} 

這需要與服務器端插入返回只是純javascript:

function someFunction() 
{ 
    var someVar; 

    someVar="Some string returned by my method"; 
}