0
我在Orchard中創建了一個自定義字段,它僅僅包含一個字段(GUID)。所以無論何時將其添加到內容類型中,它都會在「編輯器」模板中顯示新的GUID。這工作得很好,除了當我提交包含內容類型的表單時,表單將使用不同的GUID發佈。在仔細觀察之後,我發現Editor(POST)字段的驅動程序不會更新該字段的viewModel。Orchard自定義字段沒有正確發佈
任何建議或提示調試?
這裏是我的代碼
protected override DriverResult Display(
ContentPart part, Fields.UniqueIDField field,
string displayType, dynamic shapeHelper)
{
return ContentShape("Fields_String", // this is just a key in the Shape Table
GetDifferentiator(field, part),
() =>
{
var settings = field.PartFieldDefinition.Settings.GetModel<UniqueIdFieldSettings>();
var value = field.Id;
var viewModel = new UniqueIdFieldViewModel
{
Id = value
};
return shapeHelper.Fields_String(// this is the actual Shape which will be resolved (Fields/DateTime.cshtml)
Model: viewModel);
}
);
}
protected override DriverResult Editor(ContentPart part,
Fields.UniqueIDField field,
dynamic shapeHelper)
{
var settings = field.PartFieldDefinition.Settings
.GetModel<UniqueIdFieldSettings>();
var value = Guid.NewGuid().ToString();
field.Id = value;
var viewModel = new UniqueIdFieldViewModel
{
Id = value,
};
return ContentShape("Fields_String_Edit",
() => shapeHelper.EditorTemplate(
TemplateName: TemplateName,
Model: viewModel,
Prefix: GetPrefix(field, part)));
}
protected override DriverResult Editor(ContentPart part,
Fields.UniqueIDField field,
IUpdateModel updater,
dynamic shapeHelper)
{
var viewModel = new UniqueIdFieldViewModel();
if (updater.TryUpdateModel(viewModel,
GetPrefix(field, part), null, null))
{
field.Id = viewModel.Id;
}
return Editor(part, field, shapeHelper);
}
但是,您*是*每次在編輯器方法中重置值。 –
我在Editor-GET方法中獲取新的GUID並在Editor-POST中更新模型。你能建議我正確的方法嗎? – Subhasis
檢查字段的編輯模板。 – mberacochea