1

我是 Asp.net 的新手,目前正在尝试将 html 页面转换为 asp.net 网站。导航与 css 配合得很好,并使用无序列表进行填充。

<ul class="menu" id="responsive">
<li><a href="General.aspx" runat="server" id="currentGeneral"><i class="home"></i> Overview</a></li>
<li><a href="Calendarized.aspx" runat="server" id="currentCalendarized" ><i class="calendar"></i> Calendar</a></li>
</ul>

现在我要转移到 asp.net 并且根据谁登录,导航会改变。

在我创建的 Site.Master

<asp:ListView ID="ListViewMenu" runat="server">

<LayoutTemplate>
    <ul class="menu" id="responsive" runat="server">
        <asp:PlaceHolder ID="menuContainer" runat="server" />
    </ul>
</LayoutTemplate>

<ItemTemplate>
    <li><a href="<%#Eval ("href") %>" runat="server" id="<%#Eval ("id") %>"><i class="<%#Eval ("class") %>"></i><%#Eval ("text") %></a></li>
</ItemTemplate>

</asp:ListView>

然后我创建了一个存储过程,它将根据用户提取我需要的表。

ID    href          id              class  text
1     general.aspx  currentGeneral  home   overview

然后在 Site.Master.cs 页面中,我创建了一个类来填充 page_PreRender 上的菜单

    void PopulateMenu()
    {
        DataAccess da = new DataAccess();
        da.AddParameter("ID", ID, DataAccess.SQLDataType.SQLInteger, 4);
        SiteMenu = da.runSPDataSet("Portal_MenuCreate");
        ListViewMenu.DataSource = SiteMenu;
        ListViewMenu.DataBind();
    }

我认为这会起作用,但我得到以下

Parser Error: The server tag is not well formed. 
<li><a href="<%#Eval ("href") %>" runat="server" id="<%#Eval ("id") %>"><i class="<%#Eval ("class") %>"></i><%#Eval ("text") %></a></li>

任何人都知道我做错了什么,也许这不是最好的方法?感谢您的任何见解。

已编辑--- id-currentGeneral 和 runat"server" 的原因是因为使用模板我需要将 ID 设置为当前页面(如果它是当前页面)(更改选项卡颜色)

switch (pageName)
        {
            case "General.aspx":
                currentGeneral.Attributes["class"] = "active";
                break;
            case "Calendarized.aspx":
                currentCalendarized.Attributes["class"] = "active";
                break;
4

2 回答 2

2

你不能id="<%#Eval ('id') %>"runat="server"

<li><a href='<%#Eval ("href") %>' runat="server" id="HyperLink1">
   <i class='<%#Eval ("class") %>'></i><%#Eval ("text") %></a></li>

如果您没有在服务器端访问该超链接,您甚至不需要runat="server"and 。id如果是这样,请删除两者以使您的代码干净 -

<li><a href='<%#Eval ("href") %>' class='<%#Eval ("id") %>'>
   <i class='<%#Eval ("class") %>'></i><%#Eval ("text") %></a></li>

仅供参考:如果您需要 css 样式,请使用class而不是id

于 2013-04-11T20:09:58.387 回答
-1

尝试使用单引号,以便正确识别您的双引号

<li><a href="<%#Eval ('href') %>" runat="server" id="<%#Eval ('id') %>"><i class="<%#Eval ('class') %>"></i><%#Eval ('text') %></a></li>
于 2013-04-11T20:04:18.953 回答