我想将所有已定义的路由输出到页面上,而没有任何代码,因此我需要将RouteTable.Routes绑定到标记中的Repeater。我该怎么做-<asp:Repeater>在标记中仅具有DataSourceID值,而在DataSource中没有。
我假设我需要为RouteTable.Routes声明一个数据源,然后将其ID提供给Repeater,但是我该怎么做?

同样,我需要一个没有任何代码后置,仅声明式的解决方案。

我正在使用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#代码来调用它。我不认为这可以纯粹以声明的方式来完成。

关于asp.net - 如何在aspx标记中将IEnumerable绑定(bind)到Repeater?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10368866/

10-11 00:15