请指点一下这个怪问题 怪 怪 怪
问题是这样的:
我在Webform上放一个TextBox,一个button,在textBox中输入任意的如:"<!4444>" 内容,一点button,它就会出错。
请问如何在客户端先验证 TextBox中的内容是否正确? 请指教
问题点数:100、回复次数:24Top
1 楼kenMoxi(蓝雨)回复于 2004-08-03 08:57:09 得分 10
可以使用自定义的验证控件,使用正规表达式~
Top
2 楼uffeng(呆呆)回复于 2004-08-03 08:59:16 得分 0
楼主的意思自定义错误 还是只要text 输入 如你所写 就出错Top
3 楼CtrlT( 我自由!我变坏! )回复于 2004-08-03 08:59:36 得分 0
用js验证Top
4 楼Jasonchen82(梦回光辉岁月)回复于 2004-08-03 08:59:54 得分 0
同意楼上的。Top
5 楼abencatkm(阿笨猫)回复于 2004-08-03 09:00:50 得分 0
比如:输入内容
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<script language="javascript">
function emoticon(theSmilie)
{
document.form.content.value += theSmilie + ' ';
document.form.content.focus();
}
</script>
</HEAD>
出现提示:
“/WebA”应用程序中的服务器错误。
--------------------------------------------------------------------------------
从客户端(Txt_memo="<!DOCTYPE HTML PUBLI...")中检测到有潜在危险的 Request.Form 值。
说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示危及应用程序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。
异常详细信息: System.Web.HttpRequestValidationException: 从客户端(Txt_memo="<!DOCTYPE HTML PUBLI...")中检测到有潜在危险的 Request.Form 值。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
Top
6 楼zhanqiangz(闲云野鹤-Overriding)回复于 2004-08-03 09:02:16 得分 0
那要看你页面逻辑想着实现什么效果呢
是不是屏蔽非法字符啊
用正则表达式,regularexpressionvalidator。
或者用js在客户端写验证代码。Top
7 楼abencatkm(阿笨猫)回复于 2004-08-03 09:02:52 得分 0
请给出具体解决方案好吗,因为我是第一次学习做BS的东东 对js,asp等没有一点基础 谢谢了Top
8 楼adminyao(程序傻子)回复于 2004-08-03 09:03:16 得分 0
对, 用正则表达式,或者是在前台用JS写Top
9 楼sand1602(沙)回复于 2004-08-03 09:04:52 得分 10
在web.config中设置
<system.web>
<pages validateRequest="false"/>
Top
10 楼abencatkm(阿笨猫)回复于 2004-08-03 09:04:58 得分 0
我是想把文本中的内容保存到sql 数据库中,可是以提交就出错,后来发现是什么方法都不写,只放2个控件 也是出错Top
11 楼sand1602(沙)回复于 2004-08-03 09:06:11 得分 0
这样可以关闭页面的默认检查,然后在后台再手工写验证代码。Top
12 楼bcqingteng(夜行老鼠)回复于 2004-08-03 09:08:04 得分 10
用JS验证吧,可以在Page_Load中给那个按钮加上验证代码。类似于Button.Attributes.Add("onclick","这放JS代码,或者调用已经存在的JS中函数")。Top
13 楼whxleem(feeling)回复于 2004-08-03 09:08:19 得分 0
你可以用。net提供的验证控件来验证数据的合理性,本身验证控件就会生成js脚本的。Top
14 楼sand1602(沙)回复于 2004-08-03 09:08:39 得分 10
或者在页面加上<%@ page validateRequest=false %>Top
15 楼sjc0(流浪者)回复于 2004-08-03 09:10:51 得分 50
private string html(string str)
{
str=str.Replace("<","<");//处理小于号
str=str.Replace(">",">");//处理大于号
str=str.Replace("\n","<br>");//处理换行
str=str.Replace("'","‘");//单引号
str=str.Replace("\"","“");//双引号
return str;
}Top
16 楼abencatkm(阿笨猫)回复于 2004-08-03 09:13:14 得分 0
用这个只是不验证罢了,可是还是不可以提交到数据库的
在web.config中设置
<system.web>
<pages validateRequest="false"/>Top
17 楼realljx(抵制日货 功在千秋)回复于 2004-08-03 09:17:24 得分 10
<%@ page validateRequest=false %>
Top
18 楼abencatkm(阿笨猫)回复于 2004-08-03 09:18:27 得分 0
我实验了一下
1、页面加上<%@ page validateRequest=false %>
2、private string html(string str)
{
str=str.Replace("<","<");//处理小于号
str=str.Replace(">",">");//处理大于号
str=str.Replace("\n","<br>");//处理换行
str=str.Replace("'","‘");//单引号
str=str.Replace("\"","“");//双引号
return str;
}
是不出错误了。
*********请主要是那些特殊字符需要过滤呢 ??*******Top
19 楼abencatkm(阿笨猫)回复于 2004-08-03 09:20:19 得分 0
这个地方很不错 高手很多 回复速度很快 以后我要常来坐坐了Top
20 楼abencatkm(阿笨猫)回复于 2004-08-03 09:20:43 得分 0
请问主要是那些特殊字符需要过滤呢 ??Top
21 楼wnlovezxm(大垃圾人)回复于 2004-08-03 09:29:05 得分 0
在web.config中设置
<system.web>
<pages validateRequest="false"/>
这样可以写进库里的!Top
22 楼abencatkm(阿笨猫)回复于 2004-08-03 09:29:11 得分 0
用这种方法如何 呢?
HttpServerUtility.HtmlEncode 方法
String TestString = "This is a <Test String>.";
StringWriter writer = new StringWriter();
Server.HtmlEncode(TestString, writer);
String EncodedString = writer.ToString();
Top
23 楼abencatkm(阿笨猫)回复于 2004-08-03 09:33:18 得分 0
private void Button1_Click(object sender, System.EventArgs e)
{
Txt_memo.Text =html(Txt_memo.Text);
}
private string html(string str)
{
StringWriter writer = new StringWriter();
Server.HtmlEncode(str, writer);
str = writer.ToString();
/* str=str.Replace("<","<");//处理小于号
str=str.Replace(">",">");//处理大于号
str=str.Replace("\n","<br>");//处理换行
str=str.Replace("'","‘");//单引号
str=str.Replace("\"","“");//双引号*/
return str;
}
private void Button2_Click(object sender, System.EventArgs e)
{
String TestString = "This is a <Test String>.";
StringWriter writer = new StringWriter();
Server.HtmlEncode(TestString, writer);
String EncodedString = writer.ToString();
}
Top
24 楼abencatkm(阿笨猫)回复于 2004-08-03 09:39:01 得分 0
这样可以了吧
private void Button1_Click(object sender, System.EventArgs e)
{
Txt_memo.Text =HtmlEncode(Txt_memo.Text);
}
private string HtmlEncode(string str)
{ //转换
StringWriter writer = new StringWriter();
Server.HtmlEncode(str, writer);
str = writer.ToString();
return str;
}
private string HtmlDecode(string str)
{ //还原
StringWriter writer = new StringWriter();
Server.HtmlDecode(str, writer);
str = writer.ToString();
return str;
}
private void Button2_Click(object sender, System.EventArgs e)
{
Txt_memo.Text =HtmlDecode(Txt_memo.Text);
}Top




