asp.net
  • vb.net
  • variables
  • hyperlink
  • 2013-02-27 77 views 0 likes 
    0

    我目前在ASP.NET网页上有一个listview,它显示来自Access数据库的“山寨”记录。每个山寨机的名称显示为使点击时超链接带你到另一个网页:点击链接时的变量设置值

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

    此选择超链接时工作完全正常。我希望系统做的是将公共声明的变量(在模块中设置)的值设置为所选超链接的Cottage_Name。所以说,如果我点击一个超级链接,说“山寨1”,公共变量设置为“山寨1”,然后浏览网址打开下一个网页。

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

    +1

    你想通过设置一个变量来完成什么(你可以通过在查询字符串中传递值来完成)?没有AJAX或某种类型的回发,您无法设置服务器变量。 – MikeSmithDev 2013-02-27 15:49:36

    +0

    我想设置变量,以便当页面(即加载时,超链接被选中)调出,我可以使用SQL查询,选择一个记录,其中山寨的名称等于我想要设置的变量,然后在页面上显示结果。对不起,如果我没有说清楚,我很新的ASP网络发展 – 2013-02-27 16:01:58

    回答

    2

    只需使用一个LinkButton,而不是超链接的...抓住click事件,并做你想做...

    例如:

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

    然后在代码隐藏:

    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"]; 
          ... 
         } 
    
    +0

    忘了提及我在vb.net做它,但我敢肯定,我将能够解决如何做它在VB中,会让你知道它如何去感谢! – 2013-02-27 16:15:42

    +0

    尝试[this] - 它通常将C#转换为vb.net的功能不错 – Blachshma 2013-02-27 16:18:35

    0

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

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

    ,然后cottage.aspx你可以得到山寨名称:

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

    这将是最好一个按钮或其他回发解决方案,因为它不需要回发然后重定向。

    相关问题