-1

对此 EPIServer 错误有一点问题:CS1061:“System.Web.UI.Control”不包含“CurrentPage”的定义,并且没有扩展方法“CurrentPage”接受“System.Web.UI.Control”类型的第一个参数' 可以找到(您是否缺少 using 指令或程序集引用?)

当我尝试使用我的 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>

如果有人可以提供帮助,我将不胜感激。

4

2 回答 2

4

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

于 2013-04-10T08:28:28.537 回答
1

我注意到您正在使用绑定语法表达式 (a <%#) 并使用 Container,所以我假设这是在像转发器这样的数据绑定控件中?

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

GetMenuClass((PageData)Container.DataItem)

假设您已将 PageData 对象的集合绑定到转发器

于 2013-04-10T08:19:16.057 回答