使用内联C#获取umbraco属性

时间:2013-09-02 14:59:01

标签: 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</h1>
<%}%>

这是我收到的错误消息:

  

编译器错误消息:CS1061:'System.Xml.XPath.XPathNodeIterator'不包含'GetProperty'的定义,并且没有扩展方法'GetProperty'接受类型'System.Xml.XPath.XPathNodeIterator'的第一个参数可能找到(你错过了使用指令或汇编引用吗?)

最终解决方案: 基于Digbyswifts解决方案,我得到了它使用这个片段:

<%if (umbraco.NodeFactory.Node.GetCurrent().GetProperty("protectContent").Value.ToString().Equals("1")) {%> 
    <pre>Showing protected content</pre>
<%}%>

1 个答案:

答案 0 :(得分:1)

如果您知道节点ID,则可以使用

new Node(id).GetProperty("protectContent").Value.ToString() == "1"

但是,如果您在要查询的页面上,则可以使用:

Node.GetCurrent().GetProperty("protectContent").Value.ToString() == "1"

如果我使用的是高级页面,我希望在我的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();
    }
}