2013-07-31 17 views
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); 
     } 
+1

但是,您*是*每次在編輯器方法中重置值。 –

+0

我在Editor-GET方法中獲取新的GUID並在Editor-POST中更新模型。你能建議我正確的方法嗎? – Subhasis

+1

檢查字段的編輯模板。 – mberacochea

回答

1

您重置在GET編輯方法,它是由POST方法的編輯在自己的執行結束時,每次叫每次值的某些行。如果還沒有一個,只設置一個新值。

相關問題