我正在编写一个asp.net用户控件.它有一个属性,FurtherReadingPage,以及绑定到它的两个控件:ObjectDataSource和Repeater.在Repeater里面我想显示一个href属性设置为类似的超链接FurtherReadingPage + "?id=" + Eval("Id")
.我不知道如何在页面标记内执行此操作.我可以使用<% Eval("Id") %>
或<% Response.Write(FurtherReadingPage + "?id=") %>
单独使用,但我不知道如何混合它们.
Kei*_*ith 19
你有几个不同的标签:
<%
执行里面的代码:
<% int id = int.Parse(Request["id"]); %>
Run Code Online (Sandbox Code Playgroud)
<%=
写出里面的代码:
<%=id %> <!-- note no ; -->
<!-- this is shorthand for: -->
<% Response.Write(id); %>
Run Code Online (Sandbox Code Playgroud)
当在页面上呈现时,这两个都会破坏正常流程,例如,如果您在普通的Asp.net中使用它们,<head runat="server">
您将遇到问题.
<%#
数据绑定:
<%# Eval("id") %>
Run Code Online (Sandbox Code Playgroud)
这允许您指定Asp.net WebForms呈现为集合的控件的绑定(而不是可以使用的文字控件<%=
),例如:
<!-- this could be inside a repeater or another control -->
<asp:Hyperlink runat="server" ID="demo"
NavigateUrl="page.aspx?id=<%# Eval("id") %>" />
<% //without this bind the <%# will be ignored
void Page_Load( object sender, EventArgs e ) {
demo.DataBind();
//or
repeaterWithManyLinks.DataBind();
}
%>
Run Code Online (Sandbox Code Playgroud)
对于您的具体情况,您可以:
<%# Eval(...) %>
用repeater.DataBind();
要么
<% foreach(... %>
)<%= ... %>
你可以这样做 -
<asp:Hyperlink runat="Server" ID="hlLink" NavigateUrl='<%# FurtherReadingPage + "?Id=" + DataBinder.Eval(Container.DataItem, "Id") %>' />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44055 次 |
最近记录: |