今天遇到了一个以前没遇到过的问题,页面前台代码如下:   <asp:LinkButton ID="lBtnAdd" runat="server" OnClientClick="OpenAddEdit(this,'添加块','AddEdit.aspx?sysId= <%=SYS_ID%>');return false;">添加</asp:LinkButton>
<%=SYS_ID%>为绑定后台的一个传递参数。但是怎么也获取不到这个值,但是不放在脚本中就可以获取到,查看了一下网页源文件发现<a onclick="OpenAddEdit(this,'添加模块','AddEdit.aspx?sysId= &lt;%=SYS_ID%>');return false;" id="ctl00_cplButton_lBtnAdd" )">添加</a>
“<”为什么被转换成了“&lt”?如何解决这个问题??

解决方案 »

  1.   

    应该在后代码里面进行写
    lBtnAdd.OnClickClient="OpenAddEdit(this,'添加块','AddEdit.aspx?sysId=" + SYS_ID + "');return false;";
      

  2.   

    因为这个服务端控件是在后台解析的。要么像net_lover说的那样,直接放到后台添加。
    要么,改用在javascript里赋值。
      

  3.   

    jsfunction OpenAddEdit() {
          url = "AddEdit.aspx?sysId=<%=SYS_ID %>";
        }
      

  4.   

    你还可以这样
    <asp:LinkButton ID="lBtnAdd" runat="server" OnClientClick=<%# "OpenAddEdit(this,'添加块','AddEdit.aspx?sysId=" + SYS_ID + "');return false;"%>>添加</asp:LinkButton>然后
    protected void Page_Load(object sender, EventArgs e)
      {    
    lBtnAdd.DataBind();
      }
      

  5.   

    jS的另一种写法document.getElementById("lBtnAdd").onclick=function()
    {
      OpenAddEdit(this,'添加块','AddEdit.aspx?sysId= <%=SYS_ID%>');
    }
      

  6.   

    如果没有runat="server"就可以,因为服务端控件解析成Html和服务端表达式<% %>不是同一时刻进行的
      

  7.   

    本帖最后由 Sandy945 于 2011-11-01 23:48:37 编辑
      

  8.   

    服务端控件不能那样写。服务端控件最终是page的私有强类型字段,解析的时候不认识你的小脚本,只会当成一个string