首页 新闻 会员 周边 捐助

.net4.0生成html页面时,单引号变成了'怎样在生成html页面还是单引号

0
悬赏园豆:15 [已解决问题] 解决于 2014-01-15 19:48

我在LISTVIEW的ItemCreated事件中为一个DropDownList添加onchange事件,传入另一个TextBox的CLIENTID,但是在客户端的HTML中查看,传递的'变为' 不知道是什么原因?具体的代码如下:
C#代码:
protected void ListView1_ItemCreated(object sender, ListViewItemEventArgs e)
        {
            if (e.Item.ItemType == ListViewItemType.DataItem || e.Item.ItemType == ListViewItemType.InsertItem)
            {
                DropDownList ddLinktype = (DropDownList)e.Item.FindControl("ddlLinkType");
                TextBox logoUrltextBox = (TextBox)e.Item.FindControl("logoURLTextBox");
                if (ddLinktype != null && logoUrltextBox !=null)
                {
                    ddLinktype.Attributes["onchange"] = "onLinkTypeChange(this,' ctl00_ContentPlaceHolder1_ListView1_"+logoUrltextBox.ClientID+"')";
                }
                if (ddLinktype.SelectedValue == "Text")
                {
                    if (logoUrltextBox != null)    logoUrltextBox.Style["display"] = "none";

                }
            }
        }

最终生成的HTML代码:

 <td>
                    <select name="ListView1$ctrl2$ddlLinkType" id="ListView1_ctrl2_ddlLinkType" onchange="onLinkTypeChange(this,&#39;ctl00_ContentPlaceHolder1_ListView1_ctrl6_logoURLTextBox&#39;)">   //传递的参数
<option selected="selected" value="Text">文本</option>
<option value="Pic">图片</option>

</select>
                </td>
                <td>
                    <input name="ListView1$ctrl2$siteURLTextBox" type="text" id="ListView1_ctrl2_siteURLTextBox" /><span id="ListView1_ctrl2_RequiredFieldValidator3" style="color:Red;visibility:hidden;">*</span>
                </td>
                <td>
                    <input name="ListView1$ctrl2$logoURLTextBox" type="text" id="ctl00_ContentPlaceHolder1_ListView1_ctrl6_logoURLTextBox" style="display:none;" />      //HTML页面中的ID
                </td>
            </tr>

mingli的主页 mingli | 初学一级 | 园豆:127
提问于:2014-01-11 11:21
< >
分享
最佳答案
1

参考 .Net 4.0 Attributes.Add encoding bug

1. 创建HtmlAttributeEncodingNot

public class HtmlAttributeEncodingNot : System.Web.Util.HttpEncoder
{
    protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output)
    {
        output.Write(value);
    }
}

2. 在web.config中添加如下配置

<httpRuntime encoderType="HtmlAttributeEncodingNot"/>

 

收获园豆:15
dudu | 高人七级 |园豆:29568 | 2014-01-11 12:43

试的时候有个问题,HtmlAttributeEncode是protected类型的,我在其他类中访问不了,还请指教!

mingli | 园豆:127 (初学一级) | 2014-01-13 16:45

@mingli: 不需要在其他类中访问

dudu | 园豆:29568 (高人七级) | 2014-01-13 21:22

@dudu: 谢谢,明白啦,有用!!

mingli | 园豆:127 (初学一级) | 2014-01-15 19:48
其他回答(5)
0

用双引号 拼接字符串试试

wolfy | 园豆:2636 (老鸟四级) | 2014-01-11 11:33
0

学习了。

aehyok | 园豆:1212 (小虾三级) | 2014-01-11 12:57
0

传之前用HttpUtility.HtmlEncode()方法进行处理一下,拿到后在HttpUtility.HtmlDecode()获取

清风伴你行 | 园豆:153 (初学一级) | 2014-01-12 00:47

请问拿到后怎么Decode啊,不太明白

支持(0) 反对(0) mingli | 园豆:127 (初学一级) | 2014-01-13 16:47

后台代码获取后Decode后再放到HTML上,可以用JS

支持(0) 反对(0) 清风伴你行 | 园豆:153 (初学一级) | 2014-01-13 22:00
0

使用双引用加转义符试试,即

ddLinktype.Attributes["onchange"] = "onLinkTypeChange(this,\\\"ctl00_ContentPlaceHolder1_ListView1_"+logoUrltextBox.ClientID+\\\")";

空明流光 | 园豆:111 (初学一级) | 2014-01-12 22:20
0

小学生来看看!

大楚打码人 | 园豆:4313 (老鸟四级) | 2014-01-13 10:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册