对于大型填充表单,我使用asp.net FormView进行模型的魔术数据绑定。在这个模型中,我有一个名为Rides的属性(如下所示),它公开了一个列表,我显然不想完全替换它。所以我把它做成了只读。
然而,这样我就不能再使用数据绑定功能了。这个问题有一个共同的解决方案吗?
public IList<Ride> Rides
{
get
{
if (this._rides == null)
{
this._rides = new List<Ride>();
}
return this._rides;
}
}
答案 0 :(得分:1)
您仍然可以使用数据绑定,而不是&lt;%#Bind(“PropertyName”)%&gt;使用&lt;%#Eval(“PropertyName”)%&gt;, 因为Bind通常是2路绑定&amp; Eval通常用于评估基础数据源,当你有一个setter时,Bind也会很方便。 希望这能够带来足够的光线和光线。你会发现它很有帮助。
答案 1 :(得分:0)
在黑暗中狂野刺,不知道这是否会奏效,但我想你可以试试......
如何将setter(set)放回属性中,但是将其赋值给自己?
例如。
set
{
this._rides = this._rides; // Rather than this._rides = value;
}
这意味着该值不可触及该属性,如果尝试设置操作,它将不会造成任何损害,并且仍应绑定...
答案 2 :(得分:0)
蒙蒂, 看一下名为BindingList的类。绑定列表支持双向绑定。您可以在代码中从Yor集合创建它,并将其出价到FormView的datasource属性。我想这就是你想要的。 同样通过暴露IList你没有把这个东西做成只读。我可以重新制作列表,我可以一直修改你的项目。如果你真的想把rides作为只读方式返回IEnumerable并且不是通过ReadOnlyCollection返回List ...那个重排列表给另一个类不会有帮助。