EPiServer:CS1061:'System.Web.UI.Control'不包含'CurrentPage'的定义......?

时间:2013-04-10 07:51:22

标签: episerver episerver-6-r2

这个EPIServer错误有点问题: CS1061:'System.Web.UI.Control'不包含'CurrentPage'的定义,并且没有可以找到接受类型'System.Web.UI.Control'的第一个参数的扩展方法'CurrentPage'(你错过了吗?使用指令或程序集引用?)

当我尝试使用我的ascx文件中的参数访问方法时。 ascx文件:

<div id="nav">
    <ul role="menu">
      <li <%# GetMenuClass(Container.CurrentPage)%> role="menuitem">
            <%= GetNewsPage %>
            <%--<a href="#">News</a>--%>
        </li>
        <li <%# GetMenuClass(Container.CurrentPage) %> role="menuitem">
            <%= GetClientPage %>
            <%--<a href="#">Clients</a>--%>
        </li>
    </ul>
</div>

代码隐藏中的方法:

protected string GetMenuClass(PageData page)
    {


        if (page.IsSelected(CurrentPage))
        {
            return "class=\"menu-item selected\"";
        }

        return "class=\"menu-item\"";
    }

我想要实现的是这样的(如果选择了新闻页面):

<div id="nav">
<ul role="menu">
<li class="menu-item selected" role="menuitem"> News </li>
<li class="menu-item" role="menuitem">
<a href="#">Clients</a>
</li>
</ul>
</div>
</nav>

如果有人可以提供帮助,我很高兴。

2 个答案:

答案 0 :(得分:4)

看起来Container属性的类型是System.Web.UI.Control。 我不确定什么是你的容器,但看起来你需要将它转换为相应的特定类型,如EPiServer.UserControlBase,EPiServer.PageBase或EPiServer.Web.WebControls.PageControlBase。这些类型包含CurrentPage属性,即PageData。

答案 1 :(得分:1)

我注意到你正在使用绑定语法表达式(&lt;%#)并使用Container,所以我在数据绑定控件中假设这个像转发器一样?

如果是,请尝试将您对GetMenuClass的调用修改为以下

GetMenuClass((PageData)Container.DataItem)

假设您已将一组PageData对象绑定到转发器