在果园CMS中,需要一个字段

时间:2013-03-17 17:55:09

标签: orchardcms

我正在编辑内容类型“博客帖子”,我添加了自己的字段(类型分类)。现在我想将其设为必填字段,因此当用户添加新的博客帖子时,这是强制性的。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我相信您必须自己创建并处理“必需”属性 - 您应该能够通过查看Orchard.Fields项目中所有内置字段的工作方式来解决这个问题。例如,在MediaPickerField的驱动程序中:

 protected override DriverResult Editor(ContentPart part, Fields.MediaPickerField field, IUpdateModel updater, dynamic shapeHelper) {
            // if the model could not be bound, don't try to validate its properties
            if (updater.TryUpdateModel(field, GetPrefix(field, part), null, null)) {
                var settings = field.PartFieldDefinition.Settings.GetModel<MediaPickerFieldSettings>();

                var extensions = String.IsNullOrWhiteSpace(settings.AllowedExtensions)
                        ? new string[0]
                        : settings.AllowedExtensions.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

                if (extensions.Any() && field.Url != null && !extensions.Any(x => field.Url.EndsWith(x, StringComparison.OrdinalIgnoreCase))) {
                    updater.AddModelError("Url", T("The field {0} must have one of these extensions: {1}", field.Name.CamelFriendly(), settings.AllowedExtensions));
                }

                if (settings.Required && String.IsNullOrWhiteSpace(field.Url)) {
                    updater.AddModelError("Url", T("The field {0} is mandatory", field.Name.CamelFriendly()));
                }
            }

            return Editor(part, field, shapeHelper);
        }

请注意,在返回编辑器之前,它会检查该字段是否已设置为required,如果有,并且提供了注释,则调用updater.AddModelError()。我想你也必须为你的Taxonomy字段实现Required属性。