2009-09-28 49 views
1

我使用Repeater Control来显示我的WebSite中的数据。我在Repeater Control中使用HyperLink来显示数据库中表格的一个字段。在ASP.net中的Repeater控件中使用QueryString发送字符串

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

我在ASP.net中使用Linq。

回答

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

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

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

让我们从QueryString的格式开始。 QueryString看起来像下面这样:

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

对!

当然,你可以在查询字符串使用“&”符号传递多个参数,如下图所示:

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”)是从您的数据源的属性,它可以为数据集,数据表,实体类等

的,当你绑定Repeater控件< %# Eval("Id") #>将被调用。使用Repeater.DataBind()方法绑定Repeater控件。

获取其他页面上的ID:

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

我会改变?id =?到像?id = 0,因为使用?作为一个占位符可能会让某人不知道查询字符串如何工作。 – 2009-09-28 22:14:40

+0

谢谢杰森指出:) – azamsharp 2009-09-28 22:19:29

+0

当我发送此ID,我如何得到该页 – 2009-09-29 12:15:46

0

使用eval方法来现场评估到您呈现的页面。例如,您有一个产品表,并且您需要一个将产品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(); 
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,因为它会导致大量杂乱。

相关问题