将QueryString与asp:MenuItem一起使用

时间:2011-03-28 21:57:24

标签: c# asp.net query-string menuitem

如何从MenuItem传递带QueryString的字符串? 我试过了

/UserDisplay.aspx?UserName=<%(String)Session["sessUserName"]%>"

但这会返回错误..

有没有办法在menuitem中执行此操作,还是必须在OnClick事件中执行此操作?

根据请求,更多代码:

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" 
                    EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" 
                    onmenuitemclick="NavigationMenu_MenuItemClick">
        <Items>
              <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
              <asp:MenuItem NavigateUrl="~/UserManagement/UserManagement.aspx" Text="User Management">
                   <asp:MenuItem NavigateUrl="~/UserManagement/UserManagement.aspx" Text="Manage Users" />
                   <asp:MenuItem NavigateUrl="~/UserManagement/UserDisplay.aspx" Text="New User"/>
              </asp:MenuItem>
              <asp:MenuItem NavigateUrl="~/UserManagement/UserDisplay.aspx?UserName=<%(String)Session["sessUserName"]%>" Text="FYI Access Request"/>
        </Items>
</asp:Menu>

2 个答案:

答案 0 :(得分:1)

试试这个:

<asp:MenuItem NavigateUrl='~/UserManagement/UserDisplay.aspx?UserName=<%=(String)Session["sessUserName"]%>' Text="FYI Access Request"/>

我最近没有使用过WebForms,但我认为你需要使用<%= %>标签(而不是<% %>)。我还记得一些使用单引号(')而不是双引号修复的问题,但这可能是也可能不是问题。

修改

听起来你可能需要在代码隐藏中处理这个问题:

public void MyAccountLinkInit(object sender, EventArgs args)
{
    ((MenuItem)sender).NavigateUrl = 
        "~/UserManagement/UserDisplay.aspx?UserName=" + Session["sessUserName"];
}

...并按照以下方式连接此处理程序:

<asp:MenuItem OnInit="MyAccountLinkInit" Text="FYI Access Request" />

答案 1 :(得分:-1)

<script type="text/javascript">
     function GoToPage(url) {
         window.location = url + '?ins=<%=cid %>';
         return false;
     }

 </script>
<asp:MenuItem Text="FINANCIAL SUMMARY" NavigateUrl="javascript:GoToPage('ClientMainView.aspx');"/>