0

Orchardにカスタムモジュールを実装して、各コンテンツアイテムのビュー数を追跡しています。私のハンドラーでは、コンテンツアイテムのタイプがデフォルトのオーチャード「ページ」タイプであるかどうかを確認していますが、現在はEquals関数とマジックストリングを使用しています。これが私のコードです:

public class ContentItemViewRecordHandler : ContentHandler
{
    private readonly IOrchardServices services;
    private readonly IRepository<ContentItemViewRecord> repository;

    public ContentItemViewRecordHandler(IOrchardServices services, IRepository<ContentItemViewRecord> repository)
    {
        this.services = services;
        this.repository = repository;

        OnGetDisplayShape<CommonPart>(RecordView);
    }

    private void RecordView(BuildDisplayContext context, CommonPart part)
    {
        var contentItemType = context.ContentItem.ContentType;

        // THIS IS THE IF STATEMENT IN QUESTION
        if (!contentItemType.Equals("Page", StringComparison.CurrentCultureIgnoreCase))
        {
            return;
        }

        var contentItemViewRecord = new ContentItemViewRecord
        {
            ContentItemRecordId = context.ContentItem.Id,
            Username = services.WorkContext.CurrentUser.UserName,
            HostAddress = services.WorkContext.HttpContext.Request.UserHostAddress,
            DateCreated = DateTime.UtcNow
        };

        repository.Create(contentItemViewRecord);
    }
}

魔法の文字列なしでコンテンツアイテムのタイプを判別する方法があるかどうか誰かが知っていますか?

4

1 に答える 1

2

コンテンツ タイプは .NET タイプではありません。これらは、実行時にのみ存在する動的エンティティです。したがって、文字列はそれらを識別するのにまったく問題ありません。

于 2012-11-13T23:38:23.690 に答える