0

我目前listview在 ASP.NET 网页上有一个显示来自 Access 数据库的“山寨”记录。每个小屋的名称都显示为超链接,因此单击时会将您带到另一个网页:

<li style="">Name:
     <asp:Hyperlink ID="Cottage_NameLabel" NavigateURL="~/Cottage.aspx"
         runat="server" Text='<%# Eval("Cottage_Name") %>' />
     <br />

这在选择超链接时非常有效。我希望系统做的是将公开声明的变量(在模块中设置)的值设置为Cottage_Name所选超链接的值。所以假设我点击了一个超链接,上面写着“cottage1”,公共变量设置为“cottage1”,然后导航 URL 会打开下一个网页。

如果有人能帮我做到这一点,我将不胜感激!

4

2 回答 2

2

只需使用LinkBut​​ton而不是超链接...捕捉点击事件并做任何您想做的事...

例如:

<asp:LinkButton  ID="Cottage_NameLabel" runat="server"  Text="whatever" onclick="Cottage_NameLabel_Click" />

然后在 CodeBehind 中:

    protected void Cottage_NameLabel_Click(object sender, EventArgs e)
    {
        LinkButton btn = (LinkButton)sender;
        Session["MyCottageName"] = btn.Text;
        Response.Redirect("Cottage.aspx");
    }

在您的 Cottage.Aspx 页面中,您可以检查 Session 变量的值,如下所示:

protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["MyCottageName"] != null)
        {
            string name = (String)Session["MyCottageName"];
            ... 
        }
于 2013-02-27T16:10:23.660 回答
0

您可以将名称作为查询字符串变量传递给页面。如果你走这条路,你需要确保你的 URL 编码了小屋名称:

<a href='/Cottage.aspx?name=<%# Server.UrlEncode(DataBinder.Eval(Container.DataItem, "Cottage_Name")) %>'><%# Eval("Cottage_Name") %></a>

然后在山寨.aspx 上可以得到山寨名称:

Dim cottageName As String = Request.QueryString("name")

这比按钮或其他回发解决方案更可取,因为它消除了对回发和重定向的需要。

于 2013-02-27T16:28:00.893 回答