Asp.net Dynamic Data之四定义字段的显示/编辑模板和自定义验证逻辑

Asp.net Dynamic Data之四定义字段的显示/编辑模板和自定义验证逻辑

Asp.net Dynamic data提供了一些字段模板有比如在Detail View/ListView中显示用的和在Edit View/Insert View中使用的编辑字段,同时也可以自定义你所需要的字段模板。和特殊的显示格式。

    比如:我们需要对日期类型的输出进行格式化{0:yyyy-mm-dd},对于日期的编辑我需要使用一个编辑控件供我们选择;

一些常用的校验比如该字段是Int型并且编辑时候大小在1-100之间,显示的时候对不不同的值加于颜色的区别。

    比如我们需要对输入字段的值进行更严格的业务逻辑或是上下文的关联的验证那又要如何实现呢。

DEMO1

下面我们来看看如何实现这些效果最简单如何格式化显示字段内容,下面是三种不同的显示格式

代码

Partial Order 类是LINQ实体中定义的Order;在上面加上MetadataType的特性,下面定义一个MetadataOrder的内容,字段名需要和Order中定义的一致,然后在字段上加上显示格式的特性DisplayFormat(Dataformatstring),当然还支持多种数字类型字符窜类型;从上我们还看到有一个UIHint特性,定义显示或是编辑时使用的字段模板,比如UIHint("DevDateTime")使用自己定义的日期字段模板,Rang(1,100,ErrorMessage)这个就定义简单的验证逻辑类似ValidateControl。

DEMO2

自定义字段模板根据数字显示不同的颜色

代码

CustomFieldTemplate.ascx

<%@ Control Language="C#"  AutoEventWireup="true"  
CodeFile="CustomFieldTemplate.ascx.cs"  
Inherits="DynamicData_FieldTemplates_CustomFieldTemplate" %> 
<asp:Label runat="server" ID="Label1" Text="<%# FieldValueString %>" /> 
CustomFieldTemplate.ascx.cs 
public partial class DynamicData_FieldTemplates_CustomFieldTemplate :  
    System.Web.DynamicData.FieldTemplateUserControl { 
    public override Control DataControl { 
        get { 
            return Label1; 
        } 
    } 
    protected override void OnDataBinding(EventArgs e) 
    { 
        // Read current quantity value. 
        Int16 currentQty = (Int16)FieldValue; 
        if (FieldValue != null) 
        { 
            // Set quantity warning thresholds. 
            int min = 30; 
            int max = 1500; 
            if (currentQty < min) 
            { 
                // Quantity is less than the minimum  
                // warning threshold. 
                Label1.ForeColor = System.Drawing.Color.Red; 
                Label1.Font.Bold = true; 
            } 
            else 
                if (currentQty > max) 
                { 
                    // Quantity is greater than the maximum  
                    // warning threshold. 
                    Label1.ForeColor = System.Drawing.Color.Blue; 
                    Label1.Font.Bold = true; 
                } 
        } 
    } 
} 

自定义模板继承System.Web.DynamicData.FieldTemplateUserControl 具体的我就不多说了这一块比较简单

DEMO3

输入的ShipCity必须是R开头。

代码

你可以针对每个字段进行验证 ,这里要注意的是VaildationException而不是Exception;

另外你也可以根据不同操作区定义你的验证方式,比如Insert,Update,Delete

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JetpropelledSnake

Django学习笔记之Django Form表单详解

这是一个非常简单的表单。实际应用中,一个表单可能包含几十上百个字段,其中大部分需要预填充,而且我们预料到用户将来回编辑-提交几次才能完成操作。

9410
来自专栏互联网开发者交流社区

JSP语法

19850
来自专栏Golang语言社区

Golang语言为结构体排序

有很多的初学者可能对简单的数据的排序可以解决,一旦遇到复制结构的时候可能就束手无策了,今天给大家简单讲解下Go语言中结构体的排序。代...

458150
来自专栏林德熙的博客

WPF 触摸到事件

在 WPF 界面框架核心就是交互和渲染,触摸是交互的一部分。在 WPF 是需要使用多个线程来做触摸和渲染,触摸是单独一个线程,这个线程就是只获得触摸,而将触摸转...

30120
来自专栏blackpiglet

如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (三)

  这是系列文章的第三篇。下面是另外两篇的链接: 如何使用 Gin 和 Gorm 搭建一个简单的 API 服务(一) 如何使用 Gin 和 Gorm 搭建一...

12220
来自专栏python3

beautiful soup爬虫初识

官方推荐使用lxml作为解析器,因为效率更高. 在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib, ...

14440
来自专栏DOTNET

ASP.NET MVC编程——控制器

每一个请求都会经过控制器处理,控制器中的每个方法被称为控制器操作,它处理具体的请求。 1操作输入参数 控制器的操作的输入参数可以是内置类型也可以是自定义类型。 ...

28590
来自专栏赵俊的Java专栏

无限级菜单/权限树该如何设计

常用的树形显示插件有: JsTree, zTree, Layui Tree, Bootstrap Tree View 等。

77130
来自专栏林德熙的博客

.net remoting 使用事件

在RPC如果需要使用事件,相对是比较难的。本文告诉大家如何在 .net remoting 使用事件。

21210
来自专栏智能大石头

实体处理模块IEntityModule

在2015年7月16日,XCode新增了实体处理模块IEntityModule,用于拦截实体对象添删改操作。 该接口参考IHttpModule设计理念,横切在实...

201100

扫码关注云+社区

领取腾讯云代金券