日期:2014-05-17  浏览次数:20481 次

单引号转义问题。
Asp.net我在DataRowBound的事件,写如下代码
  if (e.Row.RowType == DataControlRowType.DataRow)
            {
                Button btn3 = (Button)e.Row.FindControl("Button3");
                btn3.CommandArgument = e.Row.Cells[2].Text.ToString();
               String s = "javascript:showPopWin(\'详情修改\',\'g_default.aspx?CMD=AddEqp&IDX=" + btn3.CommandArgument + "\')";
                btn3.Attributes.Add("onclick", s);

                Button btn4 = (Button)e.Row.FindControl("Button4");
                btn4.CommandArgument = e.Row.Cells[2].Text.ToString();
            }

对模板列中的一个按钮添加时间,结果单引号被转义,形式如下
 <input type="submit" name="GridView1$ctl04$Button3" value="添加器具" onclick="javascript:showPopWin(&#39;详情修改&#39;,&#39;g_default.aspx?CMD=AddEqp&amp;IDX=27&#39;);" id="GridView1_ctl04_Button3" />
其中单引号被转义,如何让单引号输入仍然是单引号不被转义?我也是这用@了,还是被转义。

------解决方案--------------------
 this.btnCalculate.Attributes.Add("onclick", @"PopWin()");

        ClientScript.RegisterStartupScript(this.GetType(), "btnClick", "<script type='text/javascript'>function PopWin(){//弹出窗口代码}</script>");

------解决方案--------------------
是不是给编码了。如果是实际的项目,不必和这个问题纠缠,可以用jquery为每个按钮添加click事件处理函数,或者别的办法,只要能绕过去就行
------解决方案--------------------
button 有一个 OnClientClick 属性,可以在设计界面里用这个属性,不用在 cs 文件里搞