之前我是在.cs文件里顶一个字符串 string a = "123.321";然后使txtbox1.text = a; 再在js文件里定义 var i = document.all.("txtbox1.text").value;得到我要的值;
现在我想省去txtbox这一步,直接将string里面的数字传给js里的变量
昨天发帖问了,也试了各位前辈教的方法
定义公共变量 public string a = "123.321";
然后在js里定义 var i = <%=a%>;
但是一直运行不成功。在上述表达式的<下方一直有条波浪线 指明“应为表达式”。
也试了别的方法 如var i = document.getElementById('a').value; 也不对。

解决方案 »

  1.   


    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!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">
            var yourName = '<%=YourName %>';
            alert(yourName);
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
        </div>
        </form>
    </body>
    </html>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                YourName = "中国";
            }
        }
        protected String YourName { get; set; }
    }
      

  2.   

    源文件<!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><title>
     
    </title>
        <script type="text/javascript">
            var yourName = '中国';
            alert(yourName);
        </script>
    </head>
    <body>
        <form name="form1" method="post" action="Default.aspx" id="form1">
    <div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGQuL7vWazEjZ/BhyBahYCuu5QYcng==" />
    </div>
     
        <div>
        
        </div>
        </form>
    </body>
    </html>
      

  3.   

    其实方法可以有好多种的,比如说,用ClientScript 注册进去就可以了!没必要那么麻烦的!注册一个变量,因为JS的特性,会认为是全局的变量,所以,可以用了!
      

  4.   

    谢谢楼上。
    不过我主要是想要string里面的数字。而且不是在html文件里面写,是在网站里面script文件夹里的js文件里面
      

  5.   

    你好,能说得详细点吗?我定义的string是从一个.txt文件里读出来的字符串数组。怎样用ClientScript 注册呢
      

  6.   


    Page.ClientScript.RegisterStartupScript(this.GetType(), "js", "clk(" + a+ ")",true);
    function clk(str)
        {
            alert(str);
        }
      

  7.   

    很简单,加上 双引号就可以了定义公共变量 public string a = "123.321";
    然后在js里定义 var i = "<%=a%>";
      

  8.   

    假如我是在.CS里定义两个字符串
    string a ="123";
    string b ="321";
    使用Page.ClientScript.RegisterStartupScript(this.GetType(), a, b,true);然后在jscript文件里定义
    function DataQuery()
    {
    }
    定义两个变量 var i ;var j;怎么能得到之前字符串a,b里面的数值?
      

  9.   

    我这边实验没问题呀
     <script type="text/javascript">
        var h="<%= ss%>";
        alert(h);
        </script>
    ======
    public partial class Default2 : System.Web.UI.Page
    {
        public string ss = "";
        protected void Page_Load(object sender, EventArgs e)
        {    }
    }
    运行页面 弹出      0.ffffffffffffffff哈哈哈
      

  10.   

    后台这样定义的
     public partial class Default2 : System.Web.UI.Page
    {
      public string ss = "0.ffffffffffffffff哈哈哈";
      protected void Page_Load(object sender, EventArgs e)
      {  }
    }
      

  11.   

    你要为你的 JS方法写传入参数要几个就写几个~
    比如
    function DataQuery(c,d)
    {
    }然后
    Page.ClientScript.RegisterStartupScript(this.GetType(), "js", "DataQuery(" + a+","+b+ ")",true);红色部分就是你写的方法名  
      

  12.   

    楼主可以写在html里面,好像是不可以直接传递到js文件中的
    非要使用的话,可以把隐藏域加上一个
    hddInput.Value = a;
    那么js文件中直接document.GetElementById("hddInput").Value获得
      

  13.   

    如果你的js 是 外部引入的,就不行了,写在 aspx 里面没问题,加上引号就出来了
      

  14.   

    var i = "<%=a%>";alert(i);------------------怎么可能不行???
      

  15.   

    我是在这里面定义的string
    public partial class _Default : System.Web.UI.Page 
    {
        public string aaa = "117085.647785";
        public string bbb = "3174122.542270";
     
       
        protected void Page_Load(object sender, EventArgs e)
        {    }
    然后我有个HTML INPUT控件需要调用script文件夹里某个文件里面的函数 function GPSQuery();
    而且string aaa,bbb的值需要传到这个函数里使用。
    试过楼上几位前辈交的方法都不正确。
    之前是将string的值先传给txtbox里面再在js函数里调用。为什么现在想直接将string的值传过去就一直不成功。由于我需要传入的数据比较多,如果都通过txtbox来中转的话,页面效果就太凌乱了
      

  16.   

    LZ把你js代码传值的地方贴出来看看
      

  17.   

    scripts/GPStext.js:
    function GPSQuery(a,b)
    {
      // var a =aaa;
       var latitude1 = Number(a);
      // var b =bbb;
       var lontitude1 =Number(b);
    window.curMapControl.ViewByPoint(latitude1,lontitude1);
    }然后在aspx里面,让INPUT BUTTON使用者这个函数<input id="Button2" type="button" value="显示历史路径" onclick="GPSQuery()" />
      

  18.   

    终于搞明白了  
    你在.js文件里有个 函数 function GPSQuery() ,
    函数里边定义了俩变量 i,j
    你在html里面调用了,
    而你想把.cs里的俩变量a,b直接赋值给i,j使用
    是这样吧。。这个我也不太懂
      
    把i,j直接搞成GPSQuery()的参数行不行啊?期待高手。
      

  19.   

    之前使用的是
    function GPSQuery(a,b)
    {
      
        var latitude1 = document.all("txtLat1").value;
       var lontitude1 = document.all("txtLon1").value;
    window.curMapControl.ViewByPoint(latitude1,lontitude1);
    }其中 txtlat1.text = aaa;
    txtlon1.text = bbb;
      

  20.   

    GPStext.js,果然是 引用外部js,这样在 GPStext.js 的方法里   var i = <%=a%>  这样操作不起作用的。你试试 这样<script type="text/javascript">
    function aaa()
    {
        var a="<%= str1%>";
        var b="<%= str2%>";
        GPSQuery(a,b);
    }</script>
    //上面的js 一定要写在 aspx页面里
    在你需要调用 GPSQuery 方法的地方用  aaa 来代替。
      

  21.   

    1楼绝对可以用.我都是这样写的.没问题.不要捣乱var i='<% =a %>;
      

  22.   

    有没有把这个放在外部js中,再引入看看?结果是不行的。
    直接写在aspx页面中才可以的。
      

  23.   

    继续求助。可能之前问问题说的不清楚,现在主要的问题像我20L写得那样。希望前辈们帮下忙。。
    之前测试运行的时候在页面上放了10个txtbox,实在是不够美观啊
      

  24.   

    我说的办法不管用吗? 我建议你试下 把 js的变量定义在 aspx页面里,然后再调用你  js外部文件里的方法,把值传进去。如果想在外部js文件中直接获取 cs 后台变量,直接定义不行的。
      

  25.   

    引用 28 楼 bananatao23 的回复:继续求助。可能之前问问题说的不清楚,现在主要的问题像我20L写得那样。希望前辈们帮下忙。。
    之前测试运行的时候在页面上放了10个txtbox,实在是不够美观啊
    我说的办法不管用吗? 我建议你试下 把 js的变量定义在 aspx页面里,然后再调用你 js外部文件里的方法,把值传进去。如果想在外部js文件中直接获取 cs 后台变量,直接定义不行的。 
      

  26.   

    直接将外部JS改成.aspx,里面就换一句var i = "<%=a%>";
      

  27.   

    我日,就那么个问题搞到现在。---------------------------规范化你的 代码! 规范你变量的命名!---------------------------public partial class _Default : System.Web.UI.Page  
    {
      public string str1 = "tmd1";
      public string str2 = "tmd2";   
      protected void Page_Load(object sender, EventArgs e)
      {
      }function GPSQuery()
    {
      var a = "<%=str1%>";
      var b = "<%=str2%>";  alert(a+' '+b);
    }<input id="Button2" type="button" value="显示历史路径" onclick="GPSQuery()" />
    这个能 TMD 不行???
      

  28.   

    我想问 你在JS文件里要获取后台变量干嘛? 后台变量跟你的JS文件压根没联系啊
      

  29.   

    他想在 scripts/GPStext.js文件里获取后台变量 
      

  30.   

    归根结底就是:引用的外部js无法这样 var a = "<%=str1%>"     获取 后台变量。吐血了....
      

  31.   

    注意js加载的顺序,不要还没加载完就执行过了实在不行你把脚本放在onload()中执行看感觉你这个问题是脚本加载顺序造成的
      

  32.   

    你好。我自己都感觉再问都不好意思了,但是,还是没能解决。。
    我做的是GPS定位。通过获取GPS坐标然后在地图上显示。
    GPS信号是我自己写在一个txt文件里的,所以提取出来存放在一个字符串数组里面,再经过处理将提取到的经纬度数据存放在字符串里。
    而在地图上显示坐标点的方法是Ajaxscripts方法,所以在JS里面写了函数,并用到我在外面得到的经纬度字符串数据。
    用了前辈你教的方法,在aspx里面定义变量,但最后还是没有显示出结果
      

  33.   

    在aspx里定义 不是在cs代码 里定义 var a = "<%=str1%>" 还有就是楼上说的 JS 加载的顺序 var定义在最前面试试
      

  34.   

    这个是我的Blog中的一个Ajax的例子,我认为可以解决你的问题,你看看吧,有不明白的再讨论。
    http://blog.csdn.net/net_boy/archive/2006/11/24/1412460.aspx
      

  35.   

    其实你的处理都可以在服务器端完成,然后通过回调的方式可以将服务器端的值传给客户端,你都说明了你用ajax,但是我看你代码里一点也没有使用。
      

  36.   

    谢谢前辈。但是这个网站是结合一个GIS软件一起做的。要运行成功必须安装这个软件才行。现在就是卡在这个传值的地方做不下去了。。
      

  37.   

    谢谢前辈指点。主要是在JS那个函数GPSQuery()里面有个函数,window.curMapControl.ViewByPoint(latitude1,lontitude1); ViewByPoint()在它的帮助文件里指明的是(AjaxScirpts)
      

  38.   

    看来真是我的表达有问题 误了事。具体是这样的
    自己写了个类文件 ReadFile.CS
    public class ReadFile
    {
    public ReadFile()
    {
    //
    //TODO: 在此处添加构造函数逻辑
    //
    }
        
        public string[] ReadFiletext()
        {
            string path = @"E:\GPS数据.txt";
            string[] mystr;
            mystr = new string[5];
    ...
    return (mystr);}
    然后在Default.aspx.cs:
    public partial class _Default : System.Web.UI.Page 
    {
        ReadFile gps;
        string[] londata = new string[5];
        string[] latdata = new string[5];
        public string aaa = "117085.647785";
        public string bbb = "3174122.542270";
        
       
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void Button1_Click(object sender, EventArgs e)
        {
             gps = new ReadFile();
            
             string[] gpsArr = gps.ReadFiletext();
                    
               for (int i = 0; i < gpsArr.Length; i++)
             {
                 string strTemp = gpsArr[i];
                 string[] lineArr = strTemp.Split(',');
                 if (lineArr[0] == "$GPGGA")
                 {
                    latdata[i] = lineArr[2];
                   londata[i] = lineArr[4];
    }
    其中 latdata[]和lonArr就是我需要传递到 script/GPStext.js里面 函数 function GPSQuery()里面要用的数据
      

  39.   

     var i = "<%=a%>";
      

  40.   

    c#里面的变量是不能传到
    script/GPStext.js文件中的,你只能在GPStext.js用到的字符串用变量代替,在aspx里写
    <script>
    var xxx="<%=%>"
    </script>
    <script src="script/GPStext.js"></script>xxx这个变量可以在 GPStext.js 使用。你不能把
    var xxx="<%=%>"
    写在
    GPStext.js文件中
      

  41.   

    已经测试通过了,能弹出数值,证明已经传递过去值了,如果你需要传递多个值,最好弄成用逗号分隔的字符串,然后接收后,转成数组就行了。default.cs
    protected void Button1_Click(object sender, EventArgs e)
            {
                string a = "1";
                string b = "2";
                Page.ClientScript.RegisterStartupScript(this.GetType(), "js", "DataQuery(" + a + "," + b + ")", true);
            }
    default.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Web1._Default" %><!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>Untitled Page</title>
         <script language="JavaScript" type="text/javascript" src="Scripts/1.js"></script>
        <script language=javascript>
            function DataQuery(c,d)
            {
                GPSQuery(c,d);
            }    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        
        </div>
        </form>
    </body>
    </html>
    1.jsfunction GPSQuery(a,b)
            {
              // var a =aaa;
              var latitude1 = Number(a);
              // var b =bbb;
              var lontitude1 =Number(b);
              alert(a);
              alert(b);
              //window.curMapControl.ViewByPoint(latitude1,lontitude1);
            }
      

  42.   

    其实如果你用ajax技术的话,就不用再aspx页面中写js了,都在.js文件与.cs文件中写代码,js里用回调函数接收值。
      

  43.   

    定义公共变量 public string a = "123.321";
    然后在js里定义 var i = "<%=a%>";
      

  44.   


    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="t._Default" %><!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>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <script type="text/javascript">
            var string = <%=str%>;
            alert(string);
            </script>
        
        </div>
        </form>
    </body>
    </html>using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;namespace t
    {
        public partial class _Default : System.Web.UI.Page
        {
            public string str = string.Empty;
            protected void Page_Load(object sender, EventArgs e)
            {
                str = "123";
            }
        }
    }
      

  45.   

    你的js是调用外部文件的吧
    你aspx那里写下
    <script  type="text/javascript"> 
    var globals = {}; 
    globals.controlIdentities.a= '<%=a%>'; 
    </script> 然后globals.controlIdentities.a就可以当做js变量用了  
      

  46.   

    其实你的处理都可以在服务器端完成,然后通过回调的方式可以将服务器端的值传给客户端,你都说明了你用ajax,但是我看你代码里一点也没有使用。 
     
      

  47.   

    方法有二:
    1.用ScriptManager.RegisterStartupScript
    2.在cs文件中定义public变量,在aspx文件直接赋值,如下:
      a.cs文件
        public partial class a : System.Web.UI.Page
        {
            public string aaa = "123";
        } a.aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="a.aspx.cs" Inherits="a" %>
     <html>
    <head>  
    <script>var aaa='<%=aa%>'</script>
    </head>
    <body>
    测试
    </body>
    </html>
      

  48.   

    表达能力有待提高。可以这样:aspx页输出数据(最好是JSON格式),js文件中用Ajax方式接数据,然后直接赋给变量。
      

  49.   

    可不可以,  在页面中  写个  影藏文本域
    <input type="hidden" value="<%=a %>" name="zzz" id="zzz" >
    这样在JS中  只要
    var j = document.getElementById("zzz").value;
    这样呢
      

  50.   


    25楼方法可行!LZ你之前都是用TEXT传值,你觉得这样很影响页面美观,那你可以选择用影藏域传值,
    和你的TEXT传值用法一样,简单易懂又不影响界面美观