Orchardcms 包含自定义标记的自动路由URL模式

Orchardcms 包含自定义标记的自动路由URL模式,orchardcms,orchardcms-1.8,Orchardcms,Orchardcms 1.8,我无法让自定义令牌与我的ContentPart一起使用。我的问题与这里描述的相同: 我已经创建了我的令牌: namespace MyNS.Types.Providers { public class BioPartTokens : ITokenProvider { public BioPartTokens() { T = NullLocalizer.Instance; } public Localizer

我无法让自定义令牌与我的ContentPart一起使用。我的问题与这里描述的相同:

我已经创建了我的令牌:

namespace MyNS.Types.Providers
{
    public class BioPartTokens : ITokenProvider
    {
        public BioPartTokens() {
            T = NullLocalizer.Instance;
        }
        public Localizer T { get; set; }
        public void Describe(dynamic context) {
            context.For("Bio", T("Bio"), T("Tokens for the Bio content type"))
                .Token("FirstName", T("FirstName"), T("First name of person."))
                .Token("LastName", T("LastName"), T("Last name of person."));
        }

        public void Evaluate(dynamic context) {
            context.For<BioPart>("Bio")
                .Token("FirstName", (Func<BioPart, object>) (f => f.ContentItem.Parts.OfType<BioPart>().First().FirstName.ToLower()))
                .Chain("FirstName", "FirstName", (Func<BioPart, object>)(f => f.ContentItem.Parts.OfType<BioPart>().First().FirstName.ToLower()))
                .Token("LastName", (Func<BioPart, object>)(f => f.ContentItem.Parts.OfType<BioPart>().First().LastName.ToLower()))
                .Chain("LastName", "LastName", (Func<BioPart, object>)(f => f.ContentItem.Parts.OfType<BioPart>().First().LastName.ToLower()))
                ;
        }
    }
}

没有记录任何错误。

这是可能的,但您可能存在计时问题。有关于如何赢得比赛的提示吗?首先,通过在驱动程序的更新方法、令牌和自动路由部分的驱动程序中设置断点,验证这是否是问题所在。然后,尝试在清单中使用依赖顺序。
namespace MyNS.Types.Models
{
    public class BioPart: ContentPart<BioPartRecord>
    {
        public string FirstName {
            get { return Record.FirstName; }
            set { Record.FirstName = value; }
        }

        public string LastName
        {
            get { return Record.LastName; }
            set { Record.LastName = value; }
        }

        public RoleInSchool RoleInSchool
        {
            get { return Record.RoleInSchool; }
            set { Record.RoleInSchool = value; }
        }

        public bool IsBlogger {
            get { return Record.IsBlogger; }
            set { Record.IsBlogger = value; }
        }
    }
}
{Content.Bio.FirstName}
{Content.BioPart.FirstName}
{Bio.FirstName}
{BioPart.FirstName}