(ASP.NET)验证控件有哪些有什么作用
验证控件的使用方法
① RequiredFieldValidator控件
当页面上的控件要求必须输入数据时,RequiredFieldValidator就起作用了,ControlToValidate属性选择需要验证的控件,而ErrorMessage属性则是校验不合法后显示的错误提示信息。
《HTML》
《HEAD》
《title》RequiredFieldValidator Example《/title》
《/HEAD》
《BODY》
《form id=“Form1“ runat=“server“》
Name:
《asp:TextBox id=“TextBox1“ runat=“server“ 》《/asp:TextBox》
《asp:RequiredFieldValidator id=“RequiredFieldValidator1“ runat=“server“
ErrorMessage=“Please enter your name“ ControlToValidate=“TextBox1“》《/asp:RequiredFieldValidator》
《asp:Button id=“Button1“ runat=“server“ Text=“Button“》《/asp:Button》
《/form》
《/BODY》
《/HTML》
②CompareValidator控件
CompareValidator控件是用来比较两个输入控件之间的数据一致性的,同时也可以用来校验控件中内容的数据类型:如整形、字符串型等。ControlToCompare和ControlToValidate属性用来设置进行比较的两个控件。
《HTML》
《HEAD》
《title》CompareValidator Example《/title》
《/HEAD》
《BODY》
《form id=“Form1“ runat=“server“》
《P》Password:
《asp:TextBox id=“txtPwd“ runat=“server“ TextMode=“Password“》《/asp:TextBox》《BR》
Confirm:
《asp:TextBox id=“TxtCfm“ runat=“server“ TextMode=“Password“》《/asp:TextBox》《/P》
《P》
《asp:Button id=“Button2“ runat=“server“ Text=“Button“》《/asp:Button》
《asp:CompareValidator id=“CompareValidator1“ runat=“server“ ErrorMessage=“Password Error!“
ControlToValidate=“TxtCfm“ ControlToCompare=“txtPwd“》《/asp:CompareValidator》《/P》
《/form》
《/BODY》
《/HTML》
③RangeValidator控件
RangeValidator控件可以用来判断用户输入的值是否在某一特定范围内,属性MaximumValue和MinimumValue用来设定范围的最大和最小值。
《HTML》
《HEAD》
《title》RangeValidator Example《/title》
《/HEAD》
《BODY》
《form id=“Form1“ runat=“server“》
《P》Age:
《asp:TextBox id=“TxtAge“ runat=“server“》《/asp:TextBox》
《asp:RangeValidator id=“RangeValidator1“ runat=“server“ ControlToValidate=“TxtAge“
ErrorMessage=“Age Error!“ MaximumValue=“99“ MinimumValue=“1“》《/asp:RangeValidator》《/P》
《/form》
《/BODY》
《/HTML》
④RegularExpressionValidator控件
RegularExpressionValidator控件可以判断用户输入的表达式是否正确,如电话号码、邮编、URL等,ControlToValidate属性选择需要验证的控件,ValidationExpression属性则编写需要验证的表达式的样式,下面的例子就是一段校验邮编的代码。
《HTML》
《HEAD》
《title》RegularExpressionValidator Example《/title》
《/HEAD》
《BODY》
《form id=“Form1“ runat=“server“》
《P》Postal Code:
《asp:TextBox id=“TxtPostalCode“ runat=“server“》《/asp:TextBox》
《asp:RegularExpressionValidator id=“RegularExpressionValidator1“ runat=“server“
ControlToValidate=“TxtPostalCode“ ErrorMessage=“Postal Code Error!“
ValidationExpression=“\d6}“》《/asp:RegularExpressionValidator》《/P》
《/form》
《/BODY》
《/HTML》
⑤CustomValidator控件
CustomValidator控件用于执行用户自定义的验证,这种校验既可以是服务器端的也可以是客户端的,下面的代码就是使用客户端验证邮编的例子。
《HTML》
《HEAD》
《title》CustomValidator Example《/title》
《/HEAD》
《BODY》
《form id=“Form1“ runat=“server“》
《P》Postal Code:
《asp:TextBox id=“TextBox1“ runat=“server“》《/asp:TextBox》
《asp:CustomValidator id=“CustomValidator1“ runat=“server“ ControlToValidate=“TextBox1“
ErrorMessage=“CustomValidator“ ClientValidationFunction=“ClientValidate“》
《/asp:CustomValidator》《/P》
《/form》
《/BODY》
《/HTML》
《script language=“vbscript“》
Sub ClientValidate(source, arguments)
If isnumeric(arguments.Value ) and len(arguments.Value)=6 Then
arguments.IsValid=true
Else
arguments.IsValid=false
End If
End Sub
《/script》
⑥ValidationSummary控件
这个控件会将页面中所有的校验错误输出为一个列表,列表的显示方式由DisplayMode属性设置。
《HTML》
《HEAD》
《title》ValidationSummary Example《/title》
《/HEAD》
《body》
《form id=“Form1“ runat=“server“》
《P》Age:
《asp:TextBox id=“TxtAge“ runat=“server“》《/asp:TextBox》
《asp:RequiredFieldValidator id=“RequiredFieldValidator1“ runat=“server“
ControlToValidate=“TxtAge“ ErrorMessage=“Age Error!“ Display=“None“》《/asp:RequiredFieldValidator》《BR》
Postal Code:
《asp:TextBox id=“TxtPostalCode“ runat=“server“》《/asp:TextBox》
《asp:RequiredFieldValidator id=“RequiredFieldValidator2“ runat=“server“
ControlToValidate=“TxtPostalCode“ ErrorMessage=“Postal Code Error!“
Display=“None“》《/asp:RequiredFieldValidator》《/P》
《P》
《asp:Button id=“Button1“ runat=“server“ Text=“Button“》《/asp:Button》《/P》
《P》
《asp:ValidationSummary id=“ValidationSummary1“ runat=“server“
HeaderText=“You must enter a value in the following fields:“》《/asp:ValidationSummary》《/P》
《/form》
《/body》
《/HTML》
android 在onCreate中获得控件的大小
这个方法并不是适合所有场景,这个方法获取的宽度是minWidth参数设置的大小和background指定背景宽度,这两个宽度的最大值,高也是如此,也就是说如果View的xml中没有两个参数中的其中一项,那么这个方法测量的宽高也是为0的,这个方法测量的并不是获取xml中设置的android:layout_height android:layout_width的值,为什么这么说了,看源码:
imageView.measure(w, h); --》调用View的measure方法--》onMeasure()方法,onMeasure源码:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(),widthMeasureSpec),
getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));
}
onMeasure-》setMeasuredDimension()-》getDefaultSize()》getSuggestedMinimumHeight()
这个是源码onMeasure中方法调用过程,逆向分析方法源码:
getSuggestedMinimumHeight():
protected int getSuggestedMinimumHeight() {
return (mBackground == null) ? mMinHeight : max(mMinHeight,mBackground.getMinimumHeight());
}
如果背景为空,那么就取mMinHeight的值,如果背景不为空就取max(mMinHeight,mBackground.getMinimumHeight())背景高度和mMinHeight最大值
接下来获取建议值完毕后查看getDefaultSize的源码:
//第一个参数是getSuggestedMinimumHeight方法获取的建议值 第二个参数是系统计算得出的宽高规格是MeasureSpec值,也就是measure(w,h)中的w或者h,
public static int getDefaultSize(int size, int measureSpec) {
int result = size;
//int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
//规格模式不就是上面的:View.MeasureSpec.UNSPECIFIED
int specMode = MeasureSpec.getMode(measureSpec);
//规格模式不就是上面的 0
int specSize = MeasureSpec.getSize(measureSpec);
switch (specMode) {//这里是什么了?View.MeasureSpec.UNSPECIFIED理解吧
case MeasureSpec.UNSPECIFIED://
//result就是getDefaultSize要返回的值,根据switch判读getDefaultSize返回的是什么了
//不就是方法的第一个形参吗,这个形参不就是宽高建议值吗
//也就是max(mMinHeight,mBackground.getMinimumHeight());
result = size;
break;
case MeasureSpec.AT_MOST:
case MeasureSpec.EXACTLY:
result = specSize;
break;
}
return result;
}
好了,现在就是setMeasuredDimension方法了,源码:
protected final void setMeasuredDimension(int measuredWidth, int measuredHeight) {
boolean optical = isLayoutModeOptical(this);
if (optical != isLayoutModeOptical(mParent)) {
Insets insets = getOpticalInsets();
int opticalWidth = insets.left + insets.right;
int opticalHeight = insets.top + insets.bottom;
measuredWidth += optical ? opticalWidth : -opticalWidth;
measuredHeight += optical ? opticalHeight : -opticalHeight;
}
mMeasuredWidth = measuredWidth;//这个是这个方法要注意的值
mMeasuredHeight = measuredHeight;//同上
mPrivateFlags |
此方法不适合所有情况。该方法获得的宽度是Minwidth参数集的大小和背景指定的背景宽度。这两个宽度的最大值是相同的。其中之一,然后该方法的宽度和高度也为0。该方法不是通过Android的值来衡量的:layout_height android:Android的Layout_width:android:layout_height android:layout_width。 , H); --》调用View的measure方法--》onMeasure()方法,onMeasure源码:protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(歌tDefaultSize(歌tSug歌stedMinimumWidth(),widthMeasureSpec), 歌tDefaultSize(歌tSug歌stedMinimumHeight() , heightMeasureSpec)) ; } onMeasure-》(setmeasureddimension() - 》歌tDefaultSize((歌tSug歌ug歌stedMiminimumheight()这个)这个这个是源码源码源码源码源码源码源码源码中方法中方法中方法过程过程过程mminheight:max (mminheight,mbackground.歌tminimumheight(); }如果如果背景第一个参数是通过歌tSug歌stMinimumHeight方法获得的建议值。当然(w,h)中中w或者h,public static int歌tDefaultSize(int size,int measuespec){int result = size; size; // int w = view.measurespec.ma客measurespec (0,view.measurespec.unsperified); / /规格规格就是上面:view.measurespec.unspecified int specmode = mesurepec.歌tMode(suesterpecerspec); //规格规格不就上面的的0 int specsize = measurespec.歌tSize(suesterpecerspec); Switch((SpecMode){//这里是什么? view.measurespec.unspemify理解它。 case lesurepec.unpecified:// //结果是歌tDefaultSize将返回的值。根据Switch,该方法的第一个形状是什么?就宽高// max (mminheight,mbackground,mbackground.歌tminimumheight(((歌tmineight());结果= size;休息; case lesurepec.at_mast:case lesurepec..excec.exly:result = specsize;休息; }返回结果; }好,setMeasuredDimension方法方法方法方法方法方法方法方法方法,源码:受保护的最终void setMeasuredDimension(intementimension(intemensewidth,int MeaduredHeight){博olean optical = islayoutmelean = islayoutmodeptical = this);如果(光学!= islayoutmopeptical(mparent)) int opticalWidth = insets.left + intsets.right; int opticalHeight = insets.top + intsets.博ttom; MeaduredWidth +=光学?光宽: - 光宽; MeaduredHeight +=光学?光视力: - 光敏性; } mmeasuredwidth = mesurdwidth; //这是注意这种方法的价值。什么用你再看一个方法的源码你就就是是知道了了,歌tMeasureWidth()歌tMeasureHeight():歌tMeasureHeight():公共最终int int int int int int int int int int歌tMeasuredwidth with the rethermeasuredwidth)return mmeasuredwidth&sealwidth&size_size__size_-size_-size_-size_-size_-size_-mips_-comp; } public final int歌tMeasuredHeight(){返回mmeasuredHeight&meadured_size_mask; }这不是返回测量宽度的两种方法吗?这不是上面两行上代码的值吗?现在回答您的问题:这是代码。我想在ma客measurespec中询问一个参数(0,view.measurespec.unpecifiend)为什么是0,这是什么意思?第一个参数应是测量视图的系统获得的规范值。最初,在测量系统后,系统会自动调用此措施。为什么是0?由于我们想通过此方法测量视图的宽度和高度,因此您并不担心系统在调用歌tMeasureWidth/高度之前没有自动调用此方法。也就是说,系统不会绘制视图,因此量度方法是直接调用的,因此它是0的宽度高度。设置。价值,我认为我的表情很好,但是如果您熟悉Measure绘图机制的源代码,那就可以了。在这里,我建议您查看(谷歌的弟弟)CSDN的博客在CSDN博客中具有完整的源代码。分析,您必须阅读它,然后才能看到它。去看看他写的博客应该有些启发
关于RangeValidator的用法,该怎么解决
在ASP.NET.NET.imimist属性中使用rangeValidator的使用:1,ControlTovalidate:控制控制2,错误注释:错误注意信息3,最大值4,最大值4,最小值4,最小值4,类型4,类型:Interen:double [double [double [double Pecure floug double [double Pecure)浮点类型];字符串[字符串类型];CurrencyHttp://www.cnblogs.com/ylbtech/archive/2013/03/07/2945801.html-rangevalidator