C# 使用内联C获取umbraco属性#
我试图根据文档类型上的true/false属性在母版页中显示内容。我使用的是内联C#,我做到了这一点:C# 使用内联C获取umbraco属性#,c#,umbraco,C#,Umbraco,我试图根据文档类型上的true/false属性在母版页中显示内容。我使用的是内联C#,我做到了这一点: <% if (umbraco.library.IsLoggedOn() && umbraco.library.GetXmlNodeById("0").GetProperty("protectContent").Value.ToString() == "1") {%> <h1>Logged on and showing protected content
<% if (umbraco.library.IsLoggedOn() && umbraco.library.GetXmlNodeById("0").GetProperty("protectContent").Value.ToString() == "1") {%>
<h1>Logged on and showing protected content</h1>
<%}%>
已登录并显示受保护的内容
这是我收到的错误消息:
编译器错误消息:CS1061:'System.Xml.XPath.XPathNodeIterator'不包含'GetProperty'的定义,并且找不到接受'System.Xml.XPath.XPathNodeIterator'类型的第一个参数的扩展方法'GetProperty'。(是否缺少using指令或程序集引用?)
最终解决方案:
基于Digbyswifts解决方案,我用以下代码片段实现了它:
<%if (umbraco.NodeFactory.Node.GetCurrent().GetProperty("protectContent").Value.ToString().Equals("1")) {%>
<pre>Showing protected content</pre>
<%}%>
显示受保护的内容
如果您知道节点ID,可以使用
Node.GetCurrent().GetProperty("protectContent").Value.ToString() == "1"
但是,如果您在要查询的页面上,您可以使用:
public partial class BaseMaster : System.Web.UI.MasterPage
{
public Node CurrentNode { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
CurrentNode = Node.GetCurrent();
}
}
如果我使用的是母版页,我希望在codebehind.cs文件中有一个CurrentNode
访问器,该访问器返回Node.GetCurrent()
,但有一个支持字段,因此每次调用时都不会请求它,例如
public partial class BaseMaster : System.Web.UI.MasterPage
{
public Node CurrentNode { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
CurrentNode = Node.GetCurrent();
}
}