除了考虑中英文的双字节与单字节问题以外,我在限制标题长度的时候发现以下问题,如果我在TextBox里面输入了Html代码,而通过Label来显示,比如:
<font color='#ff0000'>标题</font>
则Label只会显示两个汉字,而实际他已经不止两个汉字的长度了。可是如果我用Length等什么函数的话,截取出来的字符肯定是显示出来很变态,因为有一部分html代码已经被截取了,再说html代码又有那么多种。请问高手怎么解决。

解决方案 »

  1.   

    这个比较麻烦,你可以把label1里面的内容全部获取下来先,然后用字符串操作,把html标记(<br>)
    这些都去掉,剩下的就是你想要的字符串了
      

  2.   

    我试过在TextBox中输入<font color='#ff0000'>标题</font>后按Button提交会出错!从客户端(TextBox1="<font color='#ff0000……")中检测到有潜在的危险Request.Form值。
      

  3.   

    这种问题较难解决.提供一个解决思路:
    用一个正则表达式,去掉文本里面的所有HTML语句,求取出有用的文本,之后计算文本,取出需要的长度,再拿到原文本串里面进行替换.
    不过,一般来讲,我们要限制显示长度的地方,一般是标题之类,而此类东西尽量不要让用户输入HTML语句,只有在正文内容内才允许.
      

  4.   

    你可以用Request.Form("Label")获取它的非包含html代码的字符串~
    然后再计算长度!如果提示从“客户端(TextBox1="<font color='#ff0000……")中检测到有潜在的危险Request.Form值。”这个错误~就再页面第一行的<%@ Page language="c#"...... %>这里面加上~
    validateRequest=false    即~<%@ Page language="c#" validateRequest=false ...... %>
      

  5.   

    提示"有潜在的危险",你必须在web.config里面进行设置,让NET不检测语法.如下:
       <!--设置页面不检测HTML语法-->
       <pages enableSessionState = "true" validateRequest="false"/>
       
     </system.web>
      

  6.   

    很感谢以上各位的意见,不过用了Sqlprameter的话就不会有什么潜在的危险了。
    有没有好一点的方法,比如可以不把Html语法算在标题的长度之内。
    因为客户有时候需要突出显示新闻标题,比如:粗体,红色字体等。
      

  7.   

    注意要先在Web.config中设置:
    <pages enableSessionState = "true" validateRequest="false"/>
    否则不能提交包含html语法的语句。
      

  8.   

    有没有好一点的方法,比如可以不把Html语法算在标题的长度之内。
    ----------------
    没有其他方法
      

  9.   

    这是一个很经典的web常见问题了,当然了,我们不能在提交的时候使用前台script来check用户的输入内容,但是如果这种(例如"<script>alert('show me your cardpwd.'); </script>")含有特殊tag的字符串被原原本本的再匹配到asp中的话,肯定问题就大了。
    所以,当类似的内容提交了以后,需要对其进行一次转换,例如转换为&ltscript&gtalert(''show me your cardpwd'); &lt/script&gt,这样当再次在画面表示的时候,就不会有问题了阿。
    希望可以有所帮助:)