【问题标题】:How do you output raw javascript in asp.net你如何在asp.net中输出原始javascript
【发布时间】:2011-11-01 07:55:46
【问题描述】:

我想将原始 javascript 输出到 aspx 响应。使用 response.write 失败,因为它与 javascript 一起转储页面中的所有其他 asp.net 内容,例如:

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

是否可以简单地将原始文本输出到输出而不在页面上包含所有其他 asp.net 内容?我正在尝试按如下方式使用该页面:

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

此页面包含触发 aspx 页面的 javascript,但 chrome 出于显而易见的原因不喜欢它...它需要 javascript,但它正在获取 javascript + 标记 + .NET 注入的东西。

请不要告诉我为什么要这样做!处理非常具体的问题。

【问题讨论】:

    标签: javascript .net asp.net


    【解决方案1】:

    使用 .ashx Generic Handler。然后你可以设置context.Response.ContentType = "text/javascript" 并使用Response.Write

    【讨论】:

    • 通用处理程序用于这些情况。
    • 首选 ashx,如果必须使用 aspx,也可以调用 Response.Clear()。
    • 谢谢一百万...这行得通。但是,我有在我的 ashx 上调用 webmethods 的 javascript,但它并不能正常工作,但弹出窗口没有问题......仍然需要解决一些细节......
    • 没问题,很高兴为您提供帮助!请阅读:meta.stackexchange.com/questions/16721/…
    【解决方案2】:

    我不确定我是否理解您的问题,但您可以尝试以下方法:

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

    【讨论】:

      【解决方案3】:

      您还可以禁用视图状态等...并从 aspx 文件中删除所有内容。

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

      在 aspx 文件中不包含任何其他内容,不包含任何 runat=server 内容。然后使用 response.write 在代码隐藏中编写您的 javascript。

      【讨论】:

      • 我同意以上 Joey 的观点:ASHX 是做你想做的最常见/被接受的方式。但是,如果由于某种原因需要在 ASPX 页面中执行此操作,那么这个答案(来自 aepheus)应该会有所帮助。
      【解决方案4】:

      使用 WebForms 会非常困难。我能想到的最好方法是将 MVC 添加到您的项目中,以便您可以更好地控制输出。 (是的,MVC 和 WebForms 可以共存于同一个项目中)。

      这样,您仍然可以利用 .aspx 语法(或更酷的 Razor 语法)来生成 javascript 文件,而无需 WebForms 将所有烦人的东西添加到您的输出中。

      【讨论】:

        【解决方案5】:

        我需要这个,这是我的解决方案:

        创建了一个文件 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";
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-02
          • 2018-09-15
          • 1970-01-01
          • 2014-10-29
          • 2017-12-24
          • 2011-10-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多