aspx页面:
<script language="javascript">
function Go(obj){
window.location="List.aspx?CatID="+<%=catid %>+"&Mark="+obj+"";}
</script>
<FORM name="frmSearch" action="List.aspx" method="get" target="_self">
<select name="categoryID" id="categoryID" onchange="Go(document.frmSearch.categoryID.options[document.frmSearch.categoryID.selectedIndex].value)">
<option value="0">全部类别</option>
<option value="2" >笔记本电脑</option>
</select>
</FORM>
然后我在后台定义了 public string catid ="1";的时候能正常读取。
但是public string catid = ""或者后面等于字符或文字的时候就读不出来。
为什么阿。到底要怎么做,还是JS这样的传值有什么?
先谢谢了。

解决方案 »

  1.   

    既然你要传值就只能是数字或者null
      

  2.   

    只能数字和null?这是必需的还是??
      

  3.   

    这样定义的.
    public partial class List: System.Web.UI.Page 
    {
        public string catid= "";
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
      

  4.   

    escape编码escape(<%=catid %>
      

  5.   

    )
    { window.location="List.aspx?CatID="+ escape(<%=catid %>)+"&Mark="+obj+""; } 
    这样写没错吧??
    不行,还是报错.
      

  6.   

    window.location="List.aspx?CatID=<%= Server.UrlEncode(catid) %>&Mark="+obj+"";} 
    然后在List.aspx中接收catid时在Server.UrlDecode(Request.QueryString["catid"])
      

  7.   

    这样当然取不到值了,GO()是javascript方法,选择改变时就执行了,<%=catid%>就直接获取到了,并没有到任何方法里面的,你给它初始值为1,CatID就等于1了,初始值为“”,那catID获取到的就是“”字符串了
      

  8.   

    Hoho.可以了.
    能给我说说为什么吗?
      

  9.   

    window.location="List.aspx?CatID="+<%=catid %>+"&Mark="+obj+""; 中的<%=catid %>对应的是取那里的值,我怎么没有看出来呢
      

  10.   

    要么就在page_Load时里面给他赋值public string catid= ""; 
        protected void Page_Load(object sender, EventArgs e) 
        { 
    catid="1";
        }
      

  11.   

    如果是catid的值是文字,肯定涉及到编码转换的问题. 
    在后台设置一个catid的属性试一下.