asp.net-mvc-3 - 形状的 "Prefix"部分在 Editor 方法中的作用是什么?

标签 asp.net-mvc-3 orchardcms

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);
        }
    }
}

我一直在寻找 Prefix 的作用,但没有找到任何定义它或解释其用途的东西。如果前缀可以在编辑器以外的方法中使用,请随时详细说明。谢谢。

最佳答案

这是一个字符串前缀,附加到编辑器模板的表单字段名称中。需要这样做的原因:

假设您创建了一个名为 NoobsPart 的新内容部件,其属性名为“Text”。在包含 N00bsPart 的“N00b”内容类型中,您还附加了一个 BodyPart。 BodyPart 还有一个名为“Text”的属性。 BodyPart 和 N00bsPart 的 html 字段名称在回发时会相互冲突。前缀解决了字段名冲突的问题。通常可以将前缀设置为零件名称以消除歧义并避免冲突。我不确定前缀是否在其他地方使用,但考虑到它解决的问题,我认为不会。

以下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);
        }
    }
}

关于asp.net-mvc-3 - 形状的 "Prefix"部分在 Editor 方法中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9877745/

相关文章:

asp.net - 使用 ASP.Net MVC 3 构建一个简单的网站

asp.net-mvc-3 - ASP.NET MVC 3,节和多个布局级别

asp.net-mvc-3 - Orchard CMS Ajax 登录时防伪造 token

orchardcms - 在 Orchard CMS 中,如何根据附加部分属性的值获取特定内容类型的所有项目

c# - MVC4 中的 AttributeUsage 有什么作用

jquery - Asp.net MVC 3 和 Jquery 的图表 API

orchardcms - Orchard CMS 输入字段与文本字段有什么区别?

c# - 我如何从 Orchard 数据库中删除模块的数据?

asp.net-mvc-3 - 如何将 “Class Library Project” 更改为 “Test Project"?

orchardcms - 是否可以在非主题 View 中使用公共(public)资源?