Ext.Net学习笔记21:Ext.Net FormPanel 字段验证(validation)

Ext.Net学习笔记21:Ext.Net FormPanel 字段验证(validation)

作为表单,字段验证当然是不能少的,今天我们来一起看看Ext.Net FormPanel的字段验证功能。

约束功能

为了防止用户输入不合法的数据,我们可以使用约束功能来限制用户的输入,例如TextField的 MinLength/MaxLength,NumberField的MinValue/MaxValue,DateField的MinDate /MaxDate等属性,它们可以将用户输入的值限定在一个合法的范围内,防患于未然。

TextField还有一个EnforceMaxLength属性,它是Ext.Net扩展出来的,用来设定生成的html input元素的maxlength属性,从最底层限定用户输入长度。

另外,TextField 的AllowBlank属性可以控制字段是否为必填字段,true(默认值)为非必填,false为必填。

必填项验证(AllowBlank)

效果:

代码:

<ext:TextField runat="server" ID="txtEmail"
    FieldLabel="Email" Anchor="50%"
    AllowBlank="false"></ext:TextField>

长度限制(MinLength/MaxLength)

效果:

代码:

<ext:TextField runat="server" ID="txtEmail"
    FieldLabel="Email" Anchor="50%"
    AllowBlank="false"
    MinLength="5" MaxLength="10">
</ext:TextField>

对FieldContainer进行验证

效果:

代码:

<ext:FieldContainer ID="FieldContainer1"
    runat="server"
    Width="350"
    FieldLabel="Full Name"
    Layout="HBoxLayout"
    DefaultMargins="0 5 0 0"
    DefaultFlex="1"
    CombineErrors="true"
    MsgTarget="Under">
    <FieldDefaults AllowBlank="false" LabelAlign="Top" />
    <Items>
        <ext:TextField FieldLabel="First Name" />
        <ext:TextField FieldLabel="Last Name" />
    </Items>
</ext:FieldContainer>

验证类型

ExtJS提供的验证类型被称为VTypes,包括常用的一些类型验证,例如URL、Email等。

代码如下:

<ext:TextField runat="server" ID="txtEmail"
    FieldLabel="Email" Anchor="50%"
    AllowBlank="false"
    Vtype="email">
</ext:TextField>
<ext:TextField runat="server" ID="txtUrl"
    FieldLabel="网址" Anchor="50%"
    AllowBlank="false"
    Vtype="url">
</ext:TextField>

对于日期范围的验证,效果如下:

代码如下:

<ext:DateField
    ID="StartDate" runat="server" FieldLabel="开始"
    Vtype="daterange" EndDateField="EndDate" />
<ext:DateField
    ID="EndDate" runat="server" FieldLabel="结束"
    Vtype="daterange" StartDateField="StartDate" />

自定义验证类型

ExtJS提供了扩展自定义验证类型的功能,下面让我们来扩展那一个密码验证类型:

<script>
    Ext.apply(Ext.form.VTypes, {
        password: function (val, field) {
            if (field.initialPassField) {
                var pwd = Ext.getCmp(field.initialPassField);
                return pwd ? (val === pwd.getValue()) : false;
            }
            return true;
        },
        passwordText: "Passwords do not match"
    });
</script>

接下来是使用代码:

<ext:TextField
    ID="PasswordField"
    runat="server"
    FieldLabel="Password"
    InputType="Password" />
<ext:TextField ID="TextField1"
    runat="server"
    Vtype="password"
    FieldLabel="Confirm Password"
    InputType="Password">
    <CustomConfig>
        <ext:ConfigItem Name="initialPassField"
            Value="PasswordField" Mode="Value" />
    </CustomConfig>
</ext:TextField>

效果图如下:

在服务器端进行验证

除了客户端ExtJS丰富的功能之外,Ext.Net还可以方便的进行服务器端的数据验证:

<ext:TextField runat="server" ID="txtEmail"
    FieldLabel="Email" Anchor="50%"
    IsRemoteValidation="true">
    <RemoteValidation OnValidation="txtName_Validation">
    </RemoteValidation>
</ext:TextField>

然后我们来编写服务器端方法:

protected void txtName_Validation(object sender, RemoteValidationEventArgs e)
{
    var field = (TextField)sender;
    if (field.Text == "qeefee")
    {
        e.Success = true;
    }
    else
    {
        e.Success = false;
        e.ErrorMessage = field.Text + "不行,只能输入qeefee";
    }
}
时间: 2025-01-02 13:23:38

Ext.Net学习笔记21:Ext.Net FormPanel 字段验证(validation)的相关文章

Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法

Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法 在上一篇笔记中我们介绍了Ext.Net的简单用法,并创建了一个简单的登录表单.今天我们将看一下如何更好是使用FormPanel,包括使用字段默认值.Checkbox Grouping和Radio Button Grouping等. 为FormPanel设置默认值 在Form中设置FieldDefaults标签可以设置字段属性的默认值.来看一下我们的用法: <FieldDefaults LabelWidth="60&q

Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起见证FormPanel的强大. FieldLabel FieldLabel属性是每一个Field都具有的属性,它为我们的字段显示一个标签,例如上面登陆窗口中的“用户名”和“密码”. 我们可以通过LabelWidth控制标签的长度,例如我们设置用户名字段的LabelWidth="80": L

【Ext.Net学习笔记】02:Ext.Net用法概览、Ext.Net MessageBus用法、Ext.Net布局

Ext.Net用法概览 Ext.Net还是很强大,如果运用熟练可以极大的提高编程效率.如果你也要学习Ext.Net,原文博主推荐书籍:<Ext.Net Web 应用程序开发教程>,是英文的,有基础的可以看下,可以百度到PDF文档的. Ext.Net与ExtJS代码比较 上一篇中我们创建了一个使用Ext.Net创建了一个window窗口,代码非常简单: <ext:Window runat="server" ID="win" Title="示

【Ext.Net学习笔记】01:在ASP.NET WebForm中使用Ext.Net

Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的开源Web控件,包含有丰富的Ajax运用,其前身是Coolite. 下载地址:http://www.ext.net/download/示例地址:http://examples.ext.net/ 1.首先下载Ext.Net,地址:http://www.ext.net/download/ ,有两种框架选择,选择下载WebForms 当前版本是2.5.1,压缩包里面包含了不同版本,分别用在相应.

【Ext.Net学习笔记】06:Ext.Net GridPanel的用法(GridPanel 折叠/展开行、GridPanel Selection、 可编辑的GridPanel)

GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候. 下面来看看效果: 使用行折叠/展开功能之后,在Ext.Net GridPanel的行头会出现一个展开图标,点击图标以后能够将这一行展开: 使用XTemplate实现行折叠/展开 这是最简单的一种实现,在上一篇文章:[Ext.Net学习笔记]05:Ext.Net GridPanel的用法(包含Filter.Sorter.Grouping.汇

【Ext.Net学习笔记】07:后续

程序员必看书籍(转载) C++: Prata<C++ Primer Plus>:基础,第一本书.(之前的版本也可,不过推荐最新的) Lippman<Inside C++ Object Model>:初级,加深语言层次上的理解.不过有点小老了.里面的cfront编译器早退出江湖好久了.思想值得学习 侯捷<STL源码剖析>:第三本书,中级,深入STL Vandevoorde<C++ Template>:第四本,中级,范式编程 罗剑锋<Boost>两本

Ext.Net学习笔记22:Ext.Net Tree 用法详解

Ext.Net学习笔记22:Ext.Net Tree 用法详解 上面的图片是一个简单的树,使用Ext.Net来创建这样的树结构非常简单,代码如下: <ext:TreePanel runat="server"> <Root> <ext:Node Text="根节点" Expanded="true"> <Children> <ext:Node Text="节点1" Expand

Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法

Ext.Net学习笔记14:Ext.Net GridPanel Grouping用法 Ext.Net GridPanel可以进行Group操作,例如: 如何启用Grouping功能呢?只需要在GridPanel中添加一行配置节点: <Features> <ext:GridFilters ID="GridFilters1" runat="server" Local="true"> <Filters> <ex

Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridPanel中的列都具有排序功能,效果如下: 如果要禁用列排序,需要在列模型中添加一个属性Sortable="false" 客户端排序 排序是对Store的操作.如果我们要在一个Store中加入排序,可以使用下面的配置: <Sorters> <ext:DataSorter P