我使用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