我使用Repeater Control在我的网站中显示数据。我在Repeater Control中使用HyperLink来显示数据库中我的表的一个字段。
当您单击时,我希望该链接转到另一个页面并使用QueryString将字符串发送到该[页面]。我不知道我是怎么做的 - 你能解释一下怎么做吗?
我在ASP.net中使用Linq。
答案 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();