dot*_*00b 3 orchardcms asp.net-mvc-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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在寻找Prefix的功能,但没有找到任何定义它或解释它的目的.如果Prefix可以在编辑器以外的方法中使用,请随时就此进行说明.谢谢.
它是一个字符串前缀,附加到编辑器模板的表单字段名称中.这是需要的原因:
假设您创建了一个名为NoobsPart的新内容部件,其中包含一个名为"Text"的属性.在包含N00bsPart的"N00b"内容类型中,您还附加了一个BodyPart.BodyPart还有一个名为"Text"的属性.BodyPart和N00bsPart的html字段名称会在回发时相互冲突.该前缀解决了字段名称冲突的问题.通常,可以将前缀设置为部件名称以消除歧义并避免冲突.我不确定Prefix是否在其他任何地方使用,但考虑到它解决的问题,我想不会.
以下是Orchard核心代码中的示例,我通常将前缀设置为驱动程序中的类属性:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |