繁体   English   中英

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

[英]C# - Transfer the text of a hyperlink through a session inside a repeater

我想通过中继器内的会话传输超链接的文本。 但我想不出这样做的逻辑。 我的转发器在该下拉菜单中生成链接,我想获取链接中显示的文本并将其传递到另一个页面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);
            }   
        }
    }

您可以将文本添加为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可以通过“sector”参数检索它:

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

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

只需用此代码替换hyperlink标签,

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM