繁体   English   中英

你如何在asp.net中输出原始的javascript

[英]How do you output raw javascript in asp.net

我想将原始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注入的东西。

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

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

我不确定我理解你的问题,但你可以尝试这样的事情:

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

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

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

在aspx文件中不包含任何其他内容,没有runat = server任何内容。 然后使用response.write在codebehind中编写你的javascript。

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

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

使用WebForms这将非常困难。 我能想到的最好方法是将MVC添加到项目中,这样您就可以对输出进行更多控制。 (是的,MVC和WebForms可以在同一个项目中共存)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM