环境是asp.net,前台用的js,后台用的c#。
在网上各种方式已经都试过了。
也在后台用session的方式存过了,前台用js也获取不到,但是奇怪的是如果将session[**]赋一个常值的话,就能在前面用js 获得,郁闷中,也不知道是为什么。
用Page.ClientScript.RegisterStartupScript方式在后台写js代码也试过了,同样失败。
但是我直接跟踪的话,最后一次的变量都是有值的呀,为什么就是在前台获取不到呢,郁闷呀,有没有人跟我碰到过同样的问题呀?

解决方案 »

  1.   

    前台写一个隐藏域<hidden id="xxx" runat="server">然后后台:xxx.value=值;这样前台js可以通过document.getElementById("xxx").value来获取这个值
      

  2.   

    pulice string a="123";前台
    <%= a %> 这种可以不?
      

  3.   


    放到hidden中,取值没问题。。试试吧。
      

  4.   

    你在后台赋值后,需要使用Page.BindData();前台才能取到值
      

  5.   

    举个例子,
    .CSprotected string Str;
    protected void Page_Load(object sender, EventArgs e)
    {
            Str="123";
            Page.DataBind();
    }.ASPX<%Str%>
      

  6.   

    这个我刚也试了一下,也不管用,正常情况下,其实不用 Page.DataBind()前台也能获得变量值的。
      

  7.   

    你可以把前台的值放入到 
    <input type="hidden" ruant=server   />
    中,但是不提倡这种做法,你是不是对你的设计有认识啊。
      

  8.   

    对了,我是在ascx中在进行这些操作,不知道对这个有没有影响呢?在aspx中试的时候都是好的呢。
      

  9.   

    应该和加载送显的顺序有关,建议检查页面生成的HTML代码,明确了要获取的值是否已经输出来了,前台才可以用JS获取,注意顺序
      

  10.   

    这个和asp.net生命周期有关系吧
      

  11.   

    可是我在aspx上试验的时候就能获取到,在ascx上就有这个问题,你知道这二个的机制有什么不一样的吗?
      

  12.   

    你在后台Page_load设置断点,一步步的跟踪,看看执行的顺序。顺序MSDN这么说的母版页控件 Init 事件。 
      内容控件 Init 事件。 
      母版页 Init 事件。 
      内容页 Init 事件。 
      内容页 Load 事件。 
      母版页 Load 事件。 
      内容控件 Load 事件。 
      内容页 PreRender 事件。 
      母版页 PreRender 事件。 
      母版页控件 PreRender 事件。 
      内容控件 PreRender 事件。
    确定你那步变量的值是不是在整个页面已经输完毕后在DOM文档中存在了,右键点击页面,查看源代码中是不是存在那个变量的值,如果存在那用JS操作获取绝对没问题的,如果没有,说明这个变量只是过程中产生,页面生成后并没有保留到,那么可以在后台动态的把变量值赋值给一个隐藏域,并在前台DOM输出,只要在生成后的页面源代码中有这个变量的值,前台获取是不应该有问题的。
      

  13.   

    我刚在page_load上设断点跟踪了一下,到最后一步变量都是有值的,可是运行完了页面蹦出来的时候变量就成了空值,而且我用session方法也试了一下,也是一样的,用隐藏域方法也是一样的,为什么会这样呢?最后一下的时候它是有值的呀,真是纳闷了我几天了。
      

  14.   

    1. public string aaa = "";
      前台<%= aaa%>
      cs的page_load中需要使用Page.BindData();前台才能取到值
        不过用page.binddata()有时会有不知名的问题,所以我后来改用第二种了;
    2.private string aaa = "";
      public string getAAA()
      {return aaa;}
      在前台的JS中<%= getAAA()%>即可