用js给一个文本框赋值,然后再后台得到这个文本框中输入的值,但在后台得到始终是空值(都是在同一个页面)查看了一下是因为js代码是后执行的,服务器端代码是先执行的,各位帮忙给个解决方案,非常感谢!
js
        function getOrder() {
            var a = document.getElementsByName("SortOrder");
            var b = "";
            for (var i = 0; i < a.length - 1; i++) {
                b += a[i].value;
                document.getElementById("TextBox1").value = b;
            }
            //alert(document.getElementById("TextBox1").value);
        }
页面
 <input id="TextBox1"  runat="server" onclick="getOrder()" />
后台
string orderid = TextBox1.Value;
始终是空值,

解决方案 »

  1.   

    这样
     <input id="TextBox1"  runat="server" name="TextBox1" onclick="getOrder()" />后台 
    string orderid = request.form["TextBox1"];记住request.form["前台控件的name属性值"]
      

  2.   

    亲,你在哪获取的值,该不会是pageload吧?
      

  3.   

    public void getOrder()
        {
            string type = Request.QueryString["type"];
            if (type == "sort")
            {
                int id = Convert.ToInt32(Request["id"]);
                //文本框输入的序号
                string orderid = HiddenField1.Value;
                var res = (from a in dc.VM_SYS_Menu
                           where a.MenuID == id
                           select a).Single();
                res.MenuOrder = Convert.ToInt32(orderid);
                dc.SaveChanges();
            }
        }
    要在pageload事件中调用啊
      

  4.   

    我查了资料说是先是执行服务器端代码,然后是js代码,但是,我这里的功能是,要先用js得到你输入的值,然后将他的值赋给后台,这个要怎么弄啊,各位帮帮忙呀,真的乱了
      

  5.   

    var txt = document.getElementById("<%= this.txtTest.ClientID %>");这么写,服务端控件生成后的html id 会不一样
      

  6.   

    你应该是做表单提交,而且你可以设置断点,看看有没有进入到方法
    后台获取值为  Request.Form["id"]//根据表单控件的name得到值
      

  7.   

    ls的方法都试过了,js他能得到你输入的值,也能进入方法,但是,方法内就是得不到你输入的值,
     string orderid = HiddenField1.Value;
      

  8.   

          function getOrder() {
                var a = document.getElementsByName("SortOrder");
                var b = "";
                for (var i = 0; i < a.length - 1; i++) {
                    b += a[i].value;
                    document.getElementById("<%=this.TextBox1.ClientID%>").value = b;
                }
            }
      

  9.   

     str.Append("<a href=\"MenuInfo.aspx?type=sort&id=" + ds.Tables[0].Rows[i]["MenuID"].ToString() + "\"\"><input onkeyup=\"this.value=this.value.replace(/\\D/g,'')\" name=\"SortOrder\" onclick=\"getOrder()\" id=\"SortOrder\" type=\"text\" style=\"width:30px\"/></a>");
    是在列表项的文本框中输入文字,然后将输入的文字赋值给页面上的一个textbox或是隐藏域,最后在后台得到这个值
      

  10.   

    可以得到输入的,现在是要在后台得到这个TextBox1或是隐藏域中输入的值,,,,???
      

  11.   

    那你不用onclick事件 用onchange事件试试
      

  12.   

    onclick事件貌似是你点那一下 执行吧 那个时候文本框本身没有值涩
      

  13.   

    要么就是发post请求顺便说一句应该用ClientID而不是IDdocument.getElementById("<%=this.TextBox1.ClientID%>").value
      

  14.   

    后台代码先执行是对的,只有后台编译后.cs的代码,然后由iis返回到浏览器,然后客户端看你是不是引用的js和css文件,用的话加载完成后再执行。。这样吧楼主,我给你说个 方法看可行吗?
    就是页面加载完毕后,执行js代码,用js让他提交表单,这样后台就可以获得到了,
    document.getElementById('form').submit();
    然后后台再进行操作
    可行吗?
      

  15.   

    我一般是用这个:
    <input runat="server" id="text1"></input>
    绝对能用
      

  16.   


    就是说我在前台页面用脚本给一个input控件赋值后,在后台可以获取到脚本赋的值