2011-07-27 57 views
4

我不知道标题是否足够清晰,但让我解释我正在尝试做什么。如何为asp.net页面提供javascript?

我有两个用C#写在asp.net中的webapps。

应用程序A具有以下html。

<script type="text/javascript" id="blah" src="http://somServer/AppB/page.aspx?p=q"></script> 

应用程序B收到上面的请求,并需要动态注入JavaScript到上面的脚本标记。我在App B的page.aspx中有以下代码,但它不起作用。我需要应用程序B返回纯JavaScript,而不是HTML。

namespace AppB 
{ 
    public partial class Default : System.Web.UI.Page 
    { 
     if(!Page.IsPostBack) 
     { 
     Response.Clear(); 
     Response.ClearContent(); 
     REsponse.ClearHeader(); 
     Response.AddHeader("content-type", "text/javascript"); 
     var p = Request.Query["p"]; 
     if(!string.IsNullOrEmpty(p)) 
     { 
      this.Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "test", "alert('test');", false"); 
     } 
    } 
} 
+0

你得到什么样的错误? – Infotekka

+1

你为什么要打另一个.aspx页面?这是一个特定的要求吗? – TheGeekYouNeed

+0

当你说不起作用...资源是否加载但内容类型不正确?你可以附上FireBug的请求/响应头文件吗? – madcapnmckay

回答

3

你可能想使用一个HttpHandler而不是Page(见http://support.microsoft.com/kb/308001)担任非HTML内容。这将允许你写这样的东西:

public class JavascriptHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "text/javascript"; 
     string p = context.Request.QueryString["p"]; 
     string script = String.Format("alert('test - p={0}');", p); 
     context.Response.Write(script); 
    } 
} 
+0

有没有一种方法实现这与Web应用程序项目而不是类库项目?我的猜测可能是NO,因为Page类可能已经下了管道。 –

+1

@我自己,答案是肯定的。我可以添加一个通用处理程序(ashx)页面。 –

相关问题