Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Orchard中以编程方式更改字段设置值_C#_Orchardcms - Fatal编程技术网

C# 在Orchard中以编程方式更改字段设置值

C# 在Orchard中以编程方式更改字段设置值,c#,orchardcms,C#,Orchardcms,我试图在管理员UI中更新字段时修改字段设置。有没有一种方法可以在不创建ContentDefinitionEditorEvents基类的情况下实现这一点 这里是字段的更新方法,我希望能够更新字段设置(下面所示的名为Version的字段设置)。保存具有此字段的内容项后,将调用此方法 protected override DriverResult Editor(ContentPart part, DefaultTextField field, IUpdateModel updater, dynami

我试图在管理员UI中更新字段时修改字段设置。有没有一种方法可以在不创建ContentDefinitionEditorEvents基类的情况下实现这一点

这里是字段的更新方法,我希望能够更新字段设置(下面所示的名为Version的字段设置)。保存具有此字段的内容项后,将调用此方法

 protected override DriverResult Editor(ContentPart part, DefaultTextField field, IUpdateModel updater, dynamic shapeHelper)
    {

        DefaultTextFieldSettings settings = field.PartFieldDefinition.Settings.GetModel<DefaultTextFieldSettings>();

        var viewModel = new DefaultTextFieldDriverViewModel
        {
            Field = field,
            Text = field.Value,
            Settings = settings
        };

        if (updater.TryUpdateModel(viewModel, GetPrefix(field, part), null, null))
        {
            if (viewModel.Settings.Required && string.IsNullOrWhiteSpace(viewModel.Text))
            {
                updater.AddModelError("Text", T("The field {0} is mandatory", T(field.DisplayName)));
                return ContentShape("Fields_Common_DefaultText_Edit", GetDifferentiator(field, part),
                                    () => shapeHelper.EditorTemplate(TemplateName: "Fields.Common.DefaultText.Edit", Model: viewModel, Prefix: GetPrefix(field, part)));
            }

            if (string.Compare(field.Value, viewModel.Text, StringComparison.CurrentCulture) != 0)
            {
                settings.Version++;
            }

            field.Value = viewModel.Text;
        }

        return Editor(part, field, shapeHelper);
    }
受保护的重写驱动程序结果编辑器(ContentPart、DefaultTextField字段、IUpdateModel更新程序、动态shapeHelper)
{
DefaultTextFieldSettings设置=field.PartFieldDefinition.settings.GetModel();
var viewModel=新的DefaultTextFieldDriverViewModel
{
字段=字段,
Text=field.Value,
设置=设置
};
if(updater.TryUpdateModel(viewModel,GetPrefix(字段,部分),null,null))
{
if(viewModel.Settings.Required&&string.IsNullOrWhiteSpace(viewModel.Text))
{
AddModelError(“Text”,T(“字段{0}是必需的”,T(field.DisplayName));
返回ContentShape(“字段\公共\默认文本\编辑”,GetDifferentior(字段,部分),
()=>shapeHelper.EditorTemplate(TemplateName:“Fields.Common.DefaultText.Edit”,模型:viewModel,前缀:GetPrefix(field,part));
}
if(string.Compare(field.Value、viewModel.Text、StringComparison.CurrentCulture)!=0)
{
设置.Version++;
}
field.Value=viewModel.Text;
}
返回编辑器(零件、字段、形状帮助);
}

提前谢谢。

你想做什么?情况是什么?一旦我保存了一个内容项,并且该字段的值发生了更改,我将尝试更新字段中的字段设置。我添加了驱动程序中的代码以供参考。很抱歉,我不明白这有什么意义:设置在类型级别,驱动程序在项目级别执行操作。我看不出每次更新该类型的任何项目时,通过更改设置可以实现什么效果。这看起来像是对设置的滥用。明白了,我最终把它存储在了字段中。