C# - 通过转发器内的会话传输超链接的文本

时间:2017-10-28 15:31:23

标签: c# asp.net visual-studio session

我想通过转发器内的会话传输超链接的文本。但我想不出这样做的逻辑。我的转发器在该下拉菜单中生成链接,我想获取链接中显示的文本并将其传递到另一个页面Sectors.aspx。这是我到目前为止所做的:

---编辑---

我希望在单击链接时,链接中的文本将传递到另一页。例如,菜单有两个链接,APPLE和BANANA。当用户点击APPLE时,我希望下一页Sectors.aspx知道用户点击了APPLE而不是其他选项。

ASPX页面

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

        <div class="dropdown">
            <button class="dropbtn">Setor</button>
            <div class="dropdown_content">
                <asp:Repeater ID="sectors_menu" runat="server">
                    <ItemTemplate>
                        <asp:HyperLink id="hyperlink1" NavigateUrl="Sectors.aspx" Text='<%#((System.Data.DataRowView)Container.DataItem)["sector"] %>' runat="server"></asp:HyperLink> 
                    </ItemTemplate>
                </asp:Repeater>
            </div>
        </div>

</asp:Content>

代码背后

public partial class _Default : System.Web.UI.Page
    {
        MySqlConnection mysql_connection = new MySqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
        string mysql_string;
        MySqlDataAdapter mysql_data_adapter;

        public void Page_Load(object sender, EventArgs e)
        {
            Sector_label();
        }

        public void Sector_label()
        {
            mysql_string = "SELECT * FROM employees GROUP BY sector";
            mysql_data_adapter = new MySqlDataAdapter(mysql_string, mysql_connection);

            DataTable data_table = new DataTable();
            mysql_data_adapter.Fill(data_table);
            DataView data_view = new DataView(data_table);

            sectors_menu.DataSource = data_view;
            sectors_menu.DataBind();

            for (int count = 0; count < sectors_menu.Items.Count; count++)
            {
                var test = (HyperLink)sectors_menu.Items[count].FindControl("hyperlink1");

                Session["session_hyperlink"] = test.Text;

                // Debug.WriteLine(test.Text);
            }   
        }
    }

2 个答案:

答案 0 :(得分:1)

您可以将文字添加为NavigateUrl

的参数
<ItemTemplate>
    <asp:HyperLink id="hyperlink1" NavigateUrl='<%# "Sectors.aspx?sector=" + Server.UrlEncode(((System.Data.DataRowView)Container.DataItem)["sector"]).ToString() %>' Text='<%#((System.Data.DataRowView)Container.DataItem)["sector"] %>' runat="server"></asp:HyperLink> 
</ItemTemplate>

然后,Sectors.aspx可以通过&#34;扇区&#34;来检索它。参数:

protected void Page_Load(object sender, EventArgs e)
{
    string sector = Request.Params["sector"];
}

id="hyperlink1"参数看起来很可疑。您不希望所有超链接具有相同的ID。

答案 1 :(得分:0)

只需使用此代码替换hyperlink代码,

   <asp:HyperLink runat="server" Navigateurl='<%#"Sectors.aspx?mySector="+ Eval("sector") %>'   
                    Text='<%#((System.Data.DataRowView)Container.DataItem)["sector"] %>' />