我想将原始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>
这个页面包含javascript,这触发了aspx页面,但是chrome不喜欢它,原因很明显......它需要javascript,但是它正在获得javascript + markup + .NET注入的内容。
请不要评论为什么我这样做!处理非常具体的问题。
答案 0 :(得分:6)
使用.ashx Generic Handler。然后,您可以设置context.Response.ContentType = "text/javascript"
并使用Response.Write
答案 1 :(得分:3)
我不确定我理解你的问题,但你可以尝试这样的事情:
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "registerSomething", "doSomething = function(){ ... }", true);
答案 2 :(得分:3)
您还可以禁用viewstate等...并从aspx文件中删除所有内容。
<%@Page ... EnableViewState="false" EnableViewStateMac="false"%>
在aspx文件中不包含任何其他内容,没有runat = server任何内容。然后使用response.write在代码隐藏中编写你的javascript。
答案 3 :(得分:1)
使用WebForms这将非常困难。我能想到的最好方法是将MVC添加到项目中,这样您就可以对输出进行更多控制。 (是的,MVC和WebForms可以在同一个项目中共存)。
通过这种方式,您仍然可以利用.aspx
语法(或更酷的Razor语法)生成javascript文件,而无需WebForms将所有恼人的内容添加到您的输出中。
答案 4 :(得分:1)
我需要这个,这是我的解决方案:
创建了一个文件script.aspx,内容是直接的javascript,带有页面的header指令。然后在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";
}