2012-03-26 7 views
3
using Orchard.ContentManagement; 
using Orchard.ContentManagement.Drivers; 

namespace Orchard.Webshop.Drivers { 
    public class ProductDriver : ContentPartDriver<ProductPart> { 
     protected override DriverResult Editor(ProductPart part, dynamic shapeHelper) 
     { 
      return ContentShape("Parts_Product_Edit",() => shapeHelper.EditorTemplate(TemplateName: "Parts/Product", Model: part, Prefix: Prefix)); 
     } 

     protected override DriverResult Editor(ProductPart part, IUpdateModel updater, dynamic shapeHelper) 
     { 
      updater.TryUpdateModel(part, Prefix, null, null); 
      return Editor(part, shapeHelper); 
     } 
    } 
} 

接頭辞は何を検索していますが、それを定義したり目的を説明しているものは見つかりませんでした。プレフィックスがエディタ以外の方法でも使用できるのであれば、それについても自由に理解してください。ありがとうございました。シェイプの「接頭辞」部分は、エディタメソッドで何をしますか?

答えて

8

これは、エディタテンプレートのフォームフィールド名に追加される文字列接頭辞です。これが必要な理由:

「Text」というプロパティを持つNoobsPartという新しいコンテンツパーツを作成するとします。 N00bsPartを含む "N00b"コンテンツタイプでは、BodyPartも添付します。 BodyPartには "Text"というプロパティもあります。 BodyPartとN00bsPartのhtmlフィールド名は、ポストバック時に互いに衝突します。接頭辞はフィールド名の衝突を解決します。一般に、接頭辞は部品名に設定して、曖昧さを回避し、衝突を回避することができます。プレフィックスが他の場所で使用されているかどうかはわかりませんが、問題が解決されれば、私はそうは思わないでしょう。

オーチャードのコアコードの例に続いて、私は通常、ドライバのクラスプロパティとして接頭辞を設定します。

using Orchard.ContentManagement; 
using Orchard.ContentManagement.Drivers; 

namespace Orchard.Webshop.Drivers { 
    public class ProductDriver : ContentPartDriver<ProductPart> { 
     protected override string Prefix { get { return "ProductPart"; } } 
     protected override DriverResult Editor(ProductPart part, dynamic shapeHelper) 
     { 
      return ContentShape("Parts_Product_Edit",() => shapeHelper.EditorTemplate(TemplateName: "Parts/Product", Model: part, Prefix: Prefix)); 
     } 

     protected override DriverResult Editor(ProductPart part, IUpdateModel updater, dynamic shapeHelper) 
     { 
      updater.TryUpdateModel(part, Prefix, null, null); 
      return Editor(part, shapeHelper); 
     } 
    } 
} 
+0

優秀な答えを。意味をなさない私はこれのようなものがドキュメントにあります。たぶん私は十分に熱心に検索していなかったでしょう..... – dotnetN00b

+0

オーチャードの残りの部分と同様に、ドキュメントはオープンソースとコミュニティ主導です。誰かが何かを書くまで、それはそこにはありません;) –

+0

@BertrandLeRoy:あまりそれについて議論することはできません...あまりにも:) – dotnetN00b

関連する問題