You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Umbraco表单设置界面注册自定义设置字段?

为Umbraco表单设置界面添加自定义设置字段的实现方案

1. 定义自定义表单设置模型

首先创建一个继承自FormSettings的类,用来承载你的自定义设置字段:

public class CustomFormSettings : FormSettings
{
    [ConfigurationField("customFormSetting", "自定义表单配置", "/App_Plugins/CustomFormSettings/Views/TextInput.html", Description = "用于存储表单的自定义配置项")]
    public string CustomSettingValue { get; set; }
}

ConfigurationField属性用来指定字段的标识、显示名称、渲染视图路径和描述文本。

2. 注册自定义设置类型

通过Umbraco的Composer机制,替换默认的表单设置类型:

public class CustomFormSettingsComposer : IComposer
{
    public void Compose(IUmbracoBuilder builder)
    {
        builder.Forms().SetFormSettingsType<CustomFormSettings>();
    }
}

这段代码会告诉Umbraco Forms,使用你定义的CustomFormSettings来管理表单的全局设置。

3. 配置前端渲染视图(按需自定义)

如果默认的文本输入视图满足需求,可以直接复用Umbraco Forms自带的Textfield.html;如果需要自定义UI,在App_Plugins目录下创建对应插件文件夹和视图文件,比如/App_Plugins/CustomFormSettings/Views/TextInput.html:

<div ng-controller="UmbracoForms.FieldTypes.TextfieldController">
    <input type="text" ng-model="model.value" class="umb-textstring form-control" />
    <p class="help-block text-muted">{{model.description}}</p>
</div>

要是需要更复杂的控件(比如开关、下拉选择),可以参考Umbraco Forms原生字段的视图代码来编写。

4. 读取自定义设置值

在业务代码中,可以直接从表单对象的Settings属性中获取自定义配置:

var targetForm = _formRepository.GetFormById(formId);
var customConfig = ((CustomFormSettings)targetForm.Settings).CustomSettingValue;

注意事项

  • 不同Umbraco Forms版本的API存在细微差异,比如Umbraco Forms 9+基于.NET Core,启动配置和命名空间会有所调整,需要对应适配。
  • 自定义字段会自动出现在表单设置窗口的「设置」标签页中,与原生设置项并列展示。

内容的提问来源于stack exchange,提问作者troshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:33:23