<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testClientID.aspx.cs" Inherits="testClientID" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>    <script type="text/javascript">
        alert('<%=GetIsDisplayPrice()%>');
    </script>    <script type="text/javascript" src="testClient.js"></script></head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;public partial class testClientID : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    }    protected string GetIsDisplayPrice()
    {
        return "none";
    }
}
js文件
alert('<%=GetIsDisplayPrice()%>');
-----------
如上弹出来的两个测试是不一样的。
第一个因为直接写在aspx里面。他能弹出"none"而在js文件中却弹出了<%=GetIsDisplayPrice()%>字符串。。---
难道这涉及到了什么生命周期的东西?我在应用的时候本来想绑定服务端返回的一个字符串。。但是放在页面上行,而到了js文件中却不行了。。
我把问题简化出来,希望有知道的人讲讲原理

解决方案 »

  1.   

    在aspx文件中 <% %>中的代码.net会处理,而js外部文件.net不会管的
      

  2.   

    可以在页面放一个hidden input
    或者一个script标签,只声明一个变量
      

  3.   

    JS文件会吧你的〈%%〉服务器脚本当作字符串或者变量处理的,JS文件和直接在ASPX里写JS是有区别的
      

  4.   

    .net 本身不管你是页面是什么,只要是.net定义的格式,它就会处理,反之,它不管地,所以我们才会要用
    "<" ,"%","#" 这类的组合使用,,所以你引用外部文件它是不进入 的个人理解 这是样,不知道对不对, 呵呵
      

  5.   

    直接放在aspx文件里,由.net编译器来编译转成html和js,反之放在js文件中,.net是不会编译它的,也就是说不会管你有没有什么<%= %>的
      

  6.   

    你把js文件的处理托管给aspx处理。js文件对于IIS来说是作为文本输出的,aspx则是通过w3wp.exe编译之后输出的。
      

  7.   

    逆向思考 也会找到答案的。 <%=GetIsDisplayPrice()%>是什么意思? 是那种语言的语法?
      

  8.   

    你为什么不在Js内部声明一个变量,去接受《%=%》内的数据呢?
    JS是可以解析 <%=%>的,但是,我看你的那个东西是一个方法,没有试过,不知道可不可以。
      

  9.   

    为什么 alert("<%=GetIsDisplayPrice()%>")没有被看成是一个字符串 
      

  10.   

    <script type="text/javascript">
            alert('<%=GetIsDisplayPrice()%>');
        </script>
    不行哦。
      

  11.   

    你把js文件的处理托管给aspx处理。 
    -----------------------------这句话是错的
      

  12.   

    可能你对js太多情了,以致超脱了asp.net。asp.net才不理什么js。你胡乱写一些垃圾字符串,asp.net也一样生成。<%@ Page Language="C#" %><script runat="server">
        protected string GetIsDisplayPrice()
        {
            return "none";
        }</script>
        
    <html xmlns="http://www.w3.org/1999/xhtml">
    <body>
        <script< asdlf alsdfa>
            alert('<%=GetIsDisplayPrice()%>');
        </script>    <<<<<<<      AAlert('<%=GetIsDisplayPrice()%>');
        >>>>>>>    <form id="form1" runat="server">
        <asp:Button runat="server" ID="Hello" Text="hi" />
        </form>
    </body>
    </html>asp.net只认字符串,只把你写的js代码与此等同的东西。
      

  13.   

    <% %>在它所在页面被请求时 会被识别为服务器端代码,然后编译成类。 并执行你写在 js 中,这个被应是 由 w3wp.exe 来做的工作 却被 IIS 指派给其他的进程了
      

  14.   


    <script type="text/javascript" src="testClient.js"></script>这个不仅仅是加载一个字符串的意思吧。如果连接js文件只是加载一句字符串那么他会
    alert('<%=GetIsDisplayPrice()%>');
    他不写在html里面会报错的吧。js文件里面的
    alert('<%=GetIsDisplayPrice()%>');
    应该等同于页面上的
    <srcipt>
    alert('<%=GetIsDisplayPrice()%>');
    </script>--
    那才是正解吧。。只能说js属于外部文件,他不编译<%%>里面的代码了
      

  15.   

    http://"><script>alert('XSS');</script><"