【发布时间】:2011-12-21 09:24:23
【问题描述】:
我正在尝试实现一些我确信很简单但我看不到树木的树木。我创建了一个从链接按钮继承的简单控件,该按钮包含一个名为 LinkParamaters 的简单对象的列表,其想法是在标记中您可以定义一个回发 url 以及然后返回 PostBackUrl 属性以包含查询字符串的参数。这按预期工作,直到我想在转发器中对参数进行数据绑定。然后我开始收到以下解析器错误:
只有具有 DataBinding 事件的对象才支持数据绑定表达式。 UI.Controls.LinkParameter 没有 DataBinding 事件。
所以我想我显然需要实现一个数据绑定事件。也许我需要实现一个接口,但我找不到。可悲的是,我刚刚转移了工作,因此目前无法访问反射器,因此无法深入研究代码,但我可以看到 Control 具有这些事件/方法,从 Control 继承参数对象解决了解析器错误但不足为奇没有解决绑定,因为它不是控件,所以无论如何它没有意义。
链接按钮代码:
[ParseChildren(true, DefaultProperty = "Parameters")]
public class QueryLinkButton : LinkButton
{
private String _url = null;
public QueryLinkButton()
{
this.Parameters = new List<LinkParameter>();
}
public override String PostBackUrl
{
get
{
return _url ?? (_url = BuildUrl());
}
set
{
base.PostBackUrl = value;
}
}
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public List<LinkParameter> Parameters { get; set; }
private String BuildUrl()
{
//Build URL to Include Query String Params
}
}
public class LinkParameter
{
public String Name { get; set; }
public String Value { get; set; }
}
然后是 Asp 代码:
<custom:QueryLinkButton runat="server" ID="EventLink" Text="View Accommodation" PostBackUrl="HotelCriteria.aspx">
<custom:LinkParameter runat="server" Name="EventID" Value='<%# Eval("EventID")%>'/>
</custom:QueryLinkButton>
我现在通过处理这个服务器端解决了这个问题,但它确实否定了我试图创建自定义控件的内容,因为我想纯粹在标记中定义这些东西。即使只是一个让我开始的文章的链接也会非常感激,因为我已经用谷歌搜索了很长时间,只能找到类似的问题,但不是同一件事,但这很可能是搜索条件不佳。
提前致谢
保罗
【问题讨论】:
-
很遗憾,这个问题没有答案,我是笨蛋还是只是圣诞节假期,这意味着这件事迷路了?
标签: c# asp.net data-binding custom-controls repeater