2

对于大型填写表单,我使用 asp.net FormView 将魔术数据绑定到我的模型。在这个模型中,我有一个名为 Rides 的属性(如下所示),它公开了一个列表,我显然不想完全替换它。所以我把它设为只读。

但是,这样我就不能再使用数据绑定功能了。这个问题有一个通用的解决方案吗?

public IList<Ride> Rides
{
    get
    {
        if (this._rides == null)
        {
            this._rides = new List<Ride>();
        }

        return this._rides;
    }
}
4

3 回答 3

1

您仍然可以使用数据绑定,而不是 <%# Bind("PropertyName")%> 使用 <%# Eval("PropertyName")%>,因为 Bind 通常用于 2 路绑定,而 Eval 通常用于评估底层数据源,当你也有一个 setter 时,Bind 会很方便。希望这能提供足够的信息,您会发现它很有帮助。

于 2010-03-10T05:44:17.113 回答
0

黑暗中的野刺,不知道这是否有效,但我想你可以试试......

将setter(set)放回属性中,但让它分配给自己怎么样?

例如。

set
{
    this._rides = this._rides;  // Rather than this._rides = value;
}

这意味着该值是无法从属性中触及的,如果尝试设置操作,它不会造成任何损害并且仍应绑定......

于 2010-03-10T18:30:21.547 回答
0

Monty,看看一个名为 BindingList 的类。绑定列表启用双向绑定。您可以在代码中从 Yor 集合创建它,并将其绑定到 FormView 的数据源属性。我想这就是你想要的。此外,通过公开 IList,您还没有使这个东西成为只读的。我可以重铸到列表,我可以一直修改你的项目。如果您真的想将游乐设施公开为只读,则返回 IEnumerable 并且不通过 ReadOnlyCollection 返回列表...将列表重铸到其他类不会有帮助。

于 2010-03-15T08:20:46.733 回答