首先,和部件驱动器纷歧样是:字段驱动器需要担任于ContentFieldDriver,并指定泛型参数T为LocaleField范例。其次,还需要界说一个GetPrefix的静态要领,这样就可以使编辑画面中各字段的表单控件都有独一的名称,不至于呈现同名斗嘴。最后,我们还要界说几个要领,雷同于Controller中的action,用于构建这个字段范例的显示画面,编辑画面,以及编辑画面Post处理惩罚。
写模板
有了驱动器和视图模子,就相当于有了MVC中的 Controller 和Model,此刻我需要建设的是这个字段范例的View,也就是Orchard观念中的模板(Templates)。按照在驱动器中所界说的模板查找法则,我们需要在Views目次下建设一个Fields目次,并在该目次下建设一个MyCompany.Locale.cshtml文件作为该自界说字段的显示画面,代码如下:
Fields\MyCompany.Locale.cshtml<!--这个画面的Model是一个动态范例,这个动态范例是在相应的驱动器中界说的-->
<!--这个动态范例的个中一个属性Model是一个LocaleFieldViewModel范例的-->
<p class="text-field">
<span class="name">@Model.Model.Name:</span>
@Model.Model.City
@Model.Model.Address
</p>
接着,我们还需要在Views下面建设一个EditorTemplates目次,并在其下面建设一个Fields目次,然后再在内里在建设一个MyCompany.Locale.cshtml文件作为该自界说字段的编辑画面,代码如下:
EditorTemplates\Fields\MyCompany.Locale.cshtml@model MyCompany.LocaleField.ViewModels.LocaleFieldViewModel
<fieldset>
<label for="@Html.FieldIdFor(m => Model.City)">@Model.Name</label>
City:
@Html.DropDownListFor(m => m.City, this.Model.CityList)
Address:
@Html.TextBoxFor(m => m.Address)
</fieldset>
最后我们别忘了添加一个Placement.info文件,没有这个文件我们方才界说的模版就无法在页面中显示,关于Placement.info文件的先容可以查察《Understanding the placement.info File》,这里我们输入以下代码:
Placement.info<Placement>
<Place Fields_MyCompany_Locale_Edit="Content:2.5"/>
<Match DisplayType="SummaryAdmin">
<Place Fields_MyCompany_Locale="Content"/>
</Match>
<Place Fields_MyCompany_Locale="Content:after"/>
</Placement>
利用自界说字段
颠末以上一些简朴的事情后,一个新的字段范例就界说乐成。下面我们界说一个新的勾当范例,来利用我们刚建设好的所在字段范例。
首先,用打点员帐号登录并进入打点靠山(Dashboard)点击Content菜单,选择Content Types选项卡,点击Create new type按钮。在呈现的画面中输入以下内容:
然后,点击Create按钮,选择勾当范例需要包括的Part,在这里我们就选择几个根基的部件:Route路由部件,用于显示勾当标题和为此勾当指定一个路由(Url);Common通用部件,用于显示勾当提倡人和提倡时间;Containable荟萃部件,能让勾当以列表形式在页面上泛起。
接下来,我们就在这个勾当范例中添加两个字段:一个暗示勾那时间(When)用Orchard应用商店中提供的DateTimeField字段范例;一个暗示勾当所在(Where)用我们刚建设的LocaleField字段范例。
最后我们就可以在Content Types列表中找到刚建设的Event范例,点击Create New Evnet来建设新的勾当了。