Orchard CMS内容字段与类属性

时间:2012-11-18 21:45:06

标签: orchardcms

何时应该使用CMS中的字段以及何时使用类属性和数据库字段?

我的情景: 使用字段用法(文本)和价格(双精度)创建产品内容部分。然后我创建了一个contenttype产品并添加了部分。

我也可以在模型中创建产品记录并添加产品表。还有司机等的一部分  乍一看,除了需要编程的选项2之外,我看不出其他区别。

但是我遇到了一个问题: 在选项2中,我可以使用存储库并以编程方式创建大量项目。 在选项1中,我可以创建产品内容项但无法填写产品部分的字段(没有错误,但字段仍为空)

那么何时使用选项1和选项2? 选项1的问题与该选项有关吗?

编辑:选项1的问题澄清

我创建了一个productpart。对于productpart,我添加了一个十进制的字段价格,我添加了一个产品用法产品,它是一个文本字段。

在代码中我有以下内容:

        dynamic item = _cm.New("Product");
        item.TitlePart.Title = "Mijn dummy product";
        item.BodyPart.Text = "Some dummy text for this product";
        item.ProductPart.Price.Value = new decimal(20.5);
        item.ProductPart.Usage.Value = "Some dummy usage of this product";
        _cm.Create(item);

运行代码后,使用正确的标题和正文创建产品,但使用和价格出现了emtpy。 我也尝试了这个项目。作为<>方法。但是由于我没有使用该名称创建对象,因此无法编译为As。

2 个答案:

答案 0 :(得分:0)

不同之处在于,只能使用投影查询字段,但更常见的是部分和字段用于不同的用法:部分是可重用的,而不是字段。例如,价格将成为任何产品的特征,因此它应该是一部分财产。用法,我不知道,这听起来与你正在做的事情相当具体,可能会更好地作为一个领域。

关于选项1的问题,如果没有看到你的代码就很难说,但是你做错了很可能。

答案 1 :(得分:0)

显然,在访问contentpart和字段之前,必须先创建项目。至少它对我有用。

请验证我的分析是否正确。如果是这样,我会将它标记为答案,以及Bertrand的答案。

现在代码如下:

    var item = _cm.New("Product");
    item.As<TitlePart>().Title = "Mijn dummy product";
    item.As<BodyPart>().Text = "Some dummy text for this product";

    //Create first before accessing the contentparts that are dynamic.
    _cm.Create(item);

    //And then access the product via dynamic object.
    dynamic dyn = item;
    item.ProductPart.Price.Value = new decimal(20.5);
    item.ProductPart.Usage.Value = "Some dummy usage of this product";