我需要添加两个元标记。我有这个:
MetaEntry FBphoto = new MetaEntry();
FBfoto.AddAttribute("property", "og:image");
FBfoto.AddAttribute("content", "image.jpg");
SetMeta(FBphoto);
MetaEntry FBdescription = new MetaEntry();
FBdescription.AddAttribute("property", "og:description");
FBdescription.AddAttribute("content", "Some description");
SetMeta(FBdescription);
不幸的是 SetMeta 仅添加第二个元条目(FBdescription)。我怎样才能同时添加它们?
这不起作用的原因是因为如果你查看
ResourceManager.SetMeta
有以下代码
public void SetMeta(MetaEntry meta) {
if (meta == null) {
return;
}
var index = meta.Name ?? meta.HttpEquiv ?? "charset";
_metas[index] = meta;
}
因此,您对该方法的第二次调用将覆盖第一个条目(带有“charset”键的条目)。
如果您查看 Orchard Gallery 上名为 Social Media Tags 的模块以及 GitHub 上的源代码,他们会在 driver 中添加标签,在 helper 类中构建元数据
在该代码中,他们只是使用键作为不带冒号的属性名称,因此您的代码将变成
MetaEntry FBphoto = new MetaEntry();
FBphoto.Name = "ogimage";
FBphoto.AddAttribute("property", "og:image");
FBphoto.AddAttribute("content", "image.jpg");
SetMeta(FBphoto);
MetaEntry FBdescription = new MetaEntry();
FBdescription.Name = "ogdescription";
FBdescription.AddAttribute("property", "og:description");
FBdescription.AddAttribute("content", "Some description");
SetMeta(FBdescription);
它确实获取了页面上的两个标签。我认为拥有名称属性没有任何坏处,它们只是不是必需的,但您需要确认这一点。