我的思路是这样的:有2个HTML控件(select和text),和一个后台button控件。当按button后,先执行前台js函数,获得select和text的值,赋值给另一个前台控件hidden(name=txt_hid)。后台用string str=Request.Form[txt_hid],获取hidden的值,但是所取的值为null。为什么呢。我测试了一下,把这hidden的值赋给前台div的innerHTML,是有值的,但是按了button后,这个值显失了一下后就消失了,请高手指教为什么呢?为什么取不到hidden的值?

解决方案 »

  1.   

    首先确定都是服务器控件,其实注意isPostBack.
      

  2.   

    ispostback 这个说点有点道理啊。试试?
      

  3.   

    ispostback?按button不就是回传吗,能说得清楚一点吗?hidden是有name的,name=txt_hid。
      

  4.   

    如果是JS在前台赋值的话,直接在后台用控件是获取不到的,需要用FORM获取if(IsPostBack)
    {
        Resquest.Form["HiddenField1"].ToString();
    }
      

  5.   

    应该js 和 Page_Load 的执行顺序有关系
      

  6.   

    表单提交了啊。
    代码:
    function quzhi()
    {
     var selcondition=document.getElementById("sel_condition");
     var index_condition=selcondition.selectedIndex;
     var txt_hid=document.getElementById("txt_hid");
     var txtcondition=document.getElementById("txt_condition");
     txt_hid.value="0,"+selcondition.options[index_condition].value+",";
     txt_hid.value+=txtcondition.value;
     var div=document.getElementById("div2");
     div.innerHTML=txt_hid.value;
    }后台:
        protected void search_Click(object sender, EventArgs e)
        {            string a = Request.Form["txt_hid"];
                Response.Write("<script>alert(" + a + ")</script>");
        }
      

  7.   

    不是服务器控件了这么取:
    Resquest.Form["HiddenField1"];Resquest.params["HiddenField1"];
    是服务器控件了这么取:
    HiddenField1.value;
      

  8.   

    这个函数给hidden赋值没错吧,hidden把值在赋给div也没错吧,但是为什么一按button从服务器返回的页面上div的值就没了呢?或者div的值在回传之前就没了呢?
      

  9.   

    两种可能
    1.按了button后,前台的JS又执行了某些操作,将hidden值清空了2.
    Request.Form[txt_hid]改为
    Request.Form["txt_hid"]
    或者改成Request["txt_hid"]不知你这里 txt_hid是一个常量字符串还是 一个变量.另外,你这个hidden是放在 <Form></form>之间么?
      

  10.   

    把hidden改成服务器控件,直接id取值.
      

  11.   

    果然是因为hidden是没有放在 <Form></form>之间造成的。谢谢