在ASP.net中的Repeater Control中使用QueryString发送字符串

时间:2009-09-28 21:39:28

标签: asp.net query-string repeater

我使用Repeater Control在我的网站中显示数据。我在Repeater Control中使用HyperLink来显示数据库中我的表的一个字段。

当您单击时,我希望该链接转到另一个页面并使用QueryString将字符串发送到该[页面]。我不知道我是怎么做的 - 你能解释一下怎么做吗?

我在ASP.net中使用Linq。

5 个答案:

答案 0 :(得分:6)

<asp:HyperLink ID="HyperLink3" NavigateUrl='<%#Eval("ID_Message","~/ADMIN/Reply.aspx?ID={0}") %>' runat="server">OK</asp:HyperLink>

答案 1 :(得分:2)

让我们从QueryString的格式开始。 QueryString如下所示:

http://www.mysite.com/somepage.aspx?id=? 

右键!

当然你可以使用“&amp;”在QueryString中传递多个参数符号如下所示:

http://www.mysite.com/somepage.aspx?id=?&foo=?  

现在,您需要在Repeater控件内部并使用数据库中的值执行相同的操作。

<asp:Repeater>

<ItemTemplate>
<a href="http://www.mysite.com/somepage.aspx?id=<%# Eval("Id") #>"><Eval("Title")</a>
</ItemTemplate>
</asp:Repeater>

Eval(“Id”)是数据源中的属性,可以是DataSet,DataTable,Entity类等。

绑定Repeater控件时将调用&lt; %# Eval("Id") #>。使用Repeater.DataBind()方法绑定Repeater控件。

在另一页上获取ID:

if(Request.QueryString["id"] != null) 
{
   string id = Request.QueryString["id"] as String; 
}

答案 2 :(得分:1)

这是一个来自Repeater中的ItemTemplate的示例,为您提供一个想法。纬度和经度来自数据库

<a target="_blank" class="newwindow" href="http://maps.google.com/maps?saddr=<%=addressTextBox.Text%>&daddr=<%#Eval("Latitude")%>,<%#Eval("Longitude") %>">

答案 3 :(得分:1)

由于每个人都发布了嵌入在aspx页面中的所有评估的代码,我将发布一个代码所需的所有代码(我更喜欢这些代码)。

首先在你的转发器中你需要一个控件:

<asp:Repeater>
    <ItemTemplate>
        <asp:HyperLink ID="hrefLink"
            href="http://www.mysite.com/somepage.aspx?id={0}&more={1}"
            OnDataBinding="hrefLink_DataBinding">
        </asp:HyperLink>
    </ItemTemplate>
</asp:Repeater>

然后在您的代码中实现数据绑定以填写您的链接详细信息:

protected void hrefLink_DataBinding(object sender, System.EventArgs e)
{
    HyperLink link = (HyperLink)(sender);
    // Fill in your links details
    link.NavigateUrl = string.Format(link.NavigateUrl,
        Eval("ID").ToString(), Eval("More").ToString());
    link.Text = Eval("LinkTitle").ToString();        
}

这样做的好处是,您可以在需要时轻松添加更多逻辑,而不会使用大量代码混乱您的aspx页面。我更喜欢这种方法内联,但它们都是有效的解决方案,而且更多的是偏好。

如果您不想预定义链接的位置,可以更改上面的数据绑定代码,将整个NavigateUrl重写为您想要的任何内容。因此,基于某些评估值,您可以重定向到不同的页面。这是最可定制的解决方案。

附注:如果不需要,请确保在转发器上关闭ViewState,因为它会造成大量混乱。

答案 4 :(得分:0)

使用Eval方法评估渲染页面中的字段。例如,您有一个Products表,并且您想要一个将产品ID传递给showproduct.aspx的链接。请查看以下示例:

<a href='showproduct.aspx?productid=<%#Eval("ProductID")%>'>View Details</a>

在showproduct.aspx上使用 Page.Request.QueryString 集合来获取产品:

string productId = Page.Request.QueryString["productid"].ToString();