好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Orchard:生成一个自定义字段类型

Orchard:生成一个自定义字段类型

在Orchard中定义新的content types时可以使用字段,现在Orchard只内置了一个文本类型字段,在实际应用中,我们肯定会遇到添加自己的字段类型,然后在新的content types上使用。这篇文章将教给大家的是在 http://orcharddatetimefield.codeplex.com 中的自定义日期时间数据类型。如果对如何生成一个模块不清楚,可以先看看本系列的前几篇文章。

目标

这个练习做完之后,我们将新增一个新的字段类型,使用界面如下图所示:有一个日期和时间编辑器

 

生成一个模块

 

codegen module CustomFields / IncludeInSolution: true


现在在Modules目录下有一个新的目录: CustomFields ,更改 module.txt :

View Code


这里我们定义了两个features,因为这个模块最后包括多个字段,我们想要区分这个模块的默认功能和日期字段功能,这个也正好可以演示一下分类和依赖的使用。

生成字段

在 CustomFields 目录下生成目录 Fields ,添加文件 DateTimeField.cs :

 

View Code


这个自定义字段DateTimeField是从 ContentField继承下来的,ContentField提供一些字段值存储等服务。这个字段将存储为strings。

生成一个view model

生成一个或多个view models虽然不是强制的,但是一个好的实践。View model将被用来封装model用于展现而用的模型。在一个新的 ViewModels 目录下添加文件 DateTimeFieldViewModel.cs :

View Code

生成字段设置

Create a  Settings  folder and add the following  DateTimeFieldSettings.cs  file to it:

View Code

这里我们定义了一个设类,这个类是个很简单的类,Display是一个枚举值

写一个driver

在 Drivers 目录下添加文件 DateTimeFieldDriver.cs :

 

View Code

DateTimeFieldDriver 从  ContentFieldDriver  继承下来。

一开始通过依赖注入获取localizer 依赖对象,以便我们能够通过代码获取本地化字符。静态的方法GetPrefix是一个用来定义字段类型示例在数据库中唯一列名的前缀。

Display和Editor获取字段的设置和值来构建shapes。

写模板

在 Views 目录下生成一个 Fields 和 EditorTemplates 目录,然后在EditorTemplates下生成一个 Fields 目录。

在 Views/Fields 下新增文件 Custom.DateTime.cshtml :

View Code

在 Views/EditorTemplates/Fields  下生成文件 Custom.DateTime.cshtml :

 

View Code

为了指定显示顺序和位置,在项目根目录下增加文件Placement.info:

View Code

管理字段设置  

到现在还没有完全做完,我们还需要关心如何管理和持久化字段的设置,在 Settings 目录下增加文件 DateTimeFieldEditorEvents.cs :

View Code

这个类似与一个driver,但是是field settings。第一个方法获得设置并且决定展现的模板,第二个方法从提交窗口中更新模型值。

生成目录 Views\DefinitionTemplates ,添加字段的编辑摸板文件 DateTimeFieldSettings.cshtml:

View Code


更新项目文件

打开项目文件 CustomFields.csproj :

View Code


添加样式

Create a  Styles  directory and create the following  datetime.css :

View Code


使用字段

为了能够使用心得字段,首先必须打开 Orchard.ContentTypes 功能,还需要打开 DateTimeField  功能。

参考: Writing a content field   http://orcharddatetimefield.codeplex.com/

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Orchard:生成一个自定义字段类型的详细内容...

  阅读:40次