FreeTextBox编辑框遇到的问题

在做牛楠新闻发布系统添加新闻的时候,为了不使这个功能太过单调,我们选择使用FreeTextBox编辑框控件,来实现我们更人性化设计。

其中设计到两个问题:

一、 编辑框显示的效果不是我们想要的。

二、 当我们在编辑框中输入文字时,提交没有问题;但是当我们给文字设置效果时,提交时,提示我们“检测到有潜在危险的Request.Form值”。

就这两个问题,来介绍一下解决方案,还需要大家多多指点:

一、 编辑框显示的效果不是我们想要的。

我按照牛腩老师讲的,先添加引用,然后从部件中把该控件添加到工具箱,然后再使用;理应感觉没有问题啊,可是结果却如下显示:

FreeTextBox编辑框遇到的问题_第1张图片

 文本框的样式并没有显示出来。

 

解决方法

我再一次检查了自己的操作步骤,感觉没问题啊,但是问题确实存在,我又开始丈二和尚摸不着头脑了,感觉很奇怪;当时只是怀疑可能是浏览器的事,当也没有多想。

后来找来别人解决,他首先也是检查一下步骤,都感觉没有问题。后来他按F12,当时我用的浏览器是“360急速浏览器”,显示如下

 FreeTextBox编辑框遇到的问题_第2张图片

猜想版本太高了,然后条换了兼容版本/低版本,显示效果如下:

FreeTextBox编辑框遇到的问题_第3张图片

问题解决。

 

小结:

 对于这个问题,我能发现自身的一些缺陷:

一、学习的不独立性:“只是简单怀可能是浏览器的事,当时也没有多想。” ,如果去做的话问题也很容易的被解决了。

        二、不劳而获:别人解决问题的能力是别人的,只有锻炼自己的,才是真正属于自己的。

     所以在以后学习中,多思考,多实践。克服自身的一些缺点,让自己变的更加优秀。


二、当我们给文字设置效果时,提交添加新闻时,提示我们“检测到有潜在危险的Request.Form值”。

当我们在编辑器中编写我们添加的新闻时,添加的文字没有任何效果时,添加成功!如果给文字添加效果时提示如下错误:

FreeTextBox编辑框遇到的问题_第4张图片

牛腩老师的解决方案是:在页面中设置ValidateRequest=”false”

    

     结果还是上面的错误,相当于这句话没有起作用。


后来在网上搜索解决的方案:

解决方法一:修改Web.Config配置文件的标签。...。但是这个方法会将所有的页面校验功能去掉,所以不推荐使用此方法。

解决方法二:在web.config中的…配置使用ASP.NET 2.0的请求验证行为:。  

 

下面来解释一下为什么在具体页中设置validateRequest="false"不起作用,而在配置文件中设置该属性或者是使用ASP.NET 2.0的请求验证就可以解决潜在危险问题呢。

这是因为APS.NET4.0请求验证模式发生了变化。

ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击。但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor(编辑器)来让用户输入一些HTML文本,这时候ASP.NET 2.0允许我们可以通过在web.config设置validateRequest="false"。

但是在当你把站点从旧版本升级 到ASP.NET 4.0后,你会发现,即使你这样做,仍然会提示你这样的异常。之前的ASP.NET版本中,请求验证是默认启用的,但是它只对页面请求有效(请求.aspx页面),并且也只是在页面被请求时验证。但是在ASP.NET 4.0中,请求验证功能被提前到IHttpHandler.BeginRequest这个方法被请求之前,这也就意味着所有进入ASP.NET请求通道的所有的HTTP请求都将会被进行请求内容合法性的验证,包括有的自定义HttpHandler,WebService请求,甚至于利用自定义Http Module进行自定义请求处理程序。

请求验证处理被提前的后果就是导致我们在页面,或者Controller中设置 ValidateRequest=false,将会失效,无法阻止程序不去验证请求的输入内容了。因为这样做后,验证器无法得到请求的页面是否禁用了验证请求,因为还没有实例化HttpHandler。

在ASP.NET4.0中,并没有提供给我一个地方去禁用这个验证功能。但是出于兼容性的考虑,ASP.NET允许我们通过在web.config中配置使用ASP.NET 2.0的请求验证行为:


小结:兼容问题不容忽视,版本问题也是同等重要!

 


你可能感兴趣的:(BS知识)