我想在没有任何代码的情况下将所有定义的路由输出到页面上,所以我需要RouteTable.Routes
在标记中绑定到中继器。我该怎么做 -<asp:Repeater>
只有DataSourceID
标记中可用的值,而不是数据源。我假设我需要为中继器声明一个数据源RouteTable.Routes
,然后将其 ID 提供给中继器,但我该怎么做呢?
同样,我需要一个没有任何代码隐藏、仅声明性的解决方案。
我正在使用 asp.net 4.0(不是 MVC)
我想在没有任何代码的情况下将所有定义的路由输出到页面上,所以我需要RouteTable.Routes
在标记中绑定到中继器。我该怎么做 -<asp:Repeater>
只有DataSourceID
标记中可用的值,而不是数据源。我假设我需要为中继器声明一个数据源RouteTable.Routes
,然后将其 ID 提供给中继器,但我该怎么做呢?
同样,我需要一个没有任何代码隐藏、仅声明性的解决方案。
我正在使用 asp.net 4.0(不是 MVC)
asp.net Repeater 控件确实有一个 DataSource 属性,您可以在 aspx 标记中设置它(参见下面的屏幕截图):
通常,所做的是将 DataSource 属性设置为数据绑定表达式,该表达式在调用 Page.DataBind() 方法时进行计算。
<asp:Repeater ID="foo" DataSource = '<%# GetRoutes() %>' runat=server ></asp:Repeater>
我认为您仍然需要页面上的一些代码来调用 Page.DataBind() 以在 aspx 页面上启动数据绑定。
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();
}
此代码可以放在代码隐藏中,或者,因为您不想使用代码隐藏,所以可以放在 aspx 页面的服务器代码块中。但我相信它必须通过页面事件处理程序中的 C# 代码调用。我不相信这可以以纯粹的声明方式来完成。
你需要做一些最小的管道来完成这项工作。这是一个网格视图的示例。您也可以将该技术用于中继器。
数据源对象类:
public class MyObjectDataSourceEntity
{
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable GetSomeRecords()
{
DataTable names = new DataTable();
DataColumn FirstName = names.Columns.Add();
FirstName.DataType = typeof(string);
FirstName.ColumnName = "FirstName";
DataColumn LastName = names.Columns.Add();
LastName.DataType = typeof(string);
LastName.ColumnName = "LastName";
DataRow row = names.NewRow();
row[0] = "Arun";
row[1] = "Jayapal";
names.Rows.Add(row);
row = names.NewRow();
row[0] = "Namith";
row[1] = "Chandran";
names.Rows.Add(row);
return names;
}
您需要包含System.ComponentModel
命名空间。
标记:
<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
DataSourceID="ObjectDataSource1">
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetSomeRecords"
TypeName="ObjectDataSourceDemo.MyObjectDataSourceEntity">
</asp:ObjectDataSource>
注意:我在这里添加了一个数据表,因为 gridview 仅在开箱即用的排序方面才理解该对象。所以你不必编写额外的代码。否则,您将使用任何IEnumerable
对象。但是您必须编写自己的排序逻辑。与中继器无关,但我想我会提到这一点。
现在你不需要调用DataBind()
任何东西了!!!
PS:为实体编写代码后,请先构建项目。在此之后,您可以依靠您的设计器将ObjectDataSource
控件添加到页面上。该向导会自动检测项目中可支持的对象,但您需要先构建解决方案。