我使用Repeater Control来显示我的WebSite中的数据。我在Repeater Control中使用HyperLink来显示数据库中表格的一个字段。在ASP.net中的Repeater控件中使用QueryString发送字符串
当您单击时,我希望该链接转到另一个页面并使用QueryString将字符串发送到该[页面]。我不知道我是怎么做到的 - 你能解释一下怎么做吗?
我在ASP.net中使用Linq。
我使用Repeater Control来显示我的WebSite中的数据。我在Repeater Control中使用HyperLink来显示数据库中表格的一个字段。在ASP.net中的Repeater控件中使用QueryString发送字符串
当您单击时,我希望该链接转到另一个页面并使用QueryString将字符串发送到该[页面]。我不知道我是怎么做到的 - 你能解释一下怎么做吗?
我在ASP.net中使用Linq。
<asp:HyperLink ID="HyperLink3" NavigateUrl='<%#Eval("ID_Message","~/ADMIN/Reply.aspx?ID={0}") %>' runat="server">OK</asp:HyperLink>
下面是Repeater中的ItemTemplate中的一个示例,为您提供一个想法。经度和纬度来自数据库
<a target="_blank" class="newwindow" href="http://maps.google.com/maps?saddr=<%=addressTextBox.Text%>&daddr=<%#Eval("Latitude")%>,<%#Eval("Longitude") %>">
让我们从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;
}
使用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();
既然大家都已经发布代码嵌入在所有的评价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,因为它会导致大量杂乱。
我会改变?id =?到像?id = 0,因为使用?作为一个占位符可能会让某人不知道查询字符串如何工作。 – 2009-09-28 22:14:40
谢谢杰森指出:) – azamsharp 2009-09-28 22:19:29
当我发送此ID,我如何得到该页 – 2009-09-29 12:15:46