我在CriminalityInformationFormViewDisposal中有两个单选按钮,我发现这个控件动态如下
var siaHasConvictions =
((RadioButtonList)CriminalityInformationFormViewDisposal.FindControl(ContactEntity.SIA_HASCOVICTIONS));
var siaHasOffencesAwatingTrial =
((RadioButtonList)CriminalityInformationFormViewTrial.FindControl(ContactEntity.SIA_HASOFFENCEAWAITINGTRIAL));
现在在一个页面上,每当我需要获取单选按钮的值时,即是否每次我需要定义var以首先找到控件然后检查其值...现在它增加了代码行..有什么办法,所以我可以让这个findcontrol部分全局为那一页,然后我访问它的价值就像我们做的正常控制,请帮助我这个,因为我试图在页面加载之前声明,,,但是为gridcontrol提供了错误
答案 0 :(得分:2)
我认为没有简单的方法,但这可能会帮助您不要一遍又一遍地重复代码:
private RadioButtonList SiaHasConvictions
{
get
{
return (RadioButtonList)CriminalityInformationFormViewDisposal.FindControl(ContactEntity.SIA_HASCOVICTIONS);
}
}
使用此属性,您只需在代码中使用this.SiaHasConvictions
即可。您可以通过在变量中保存引用一次来优化它:
private RadioButtonList _siaHasConvictions;
private RadioButtonList SiaHasConvictions
{
get
{
if (this._siaHasConvictions == null)
{
this._siaHasConvictions = (RadioButtonList)CriminalityInformationFormViewDisposal.FindControl(ContactEntity.SIA_HASCOVICTIONS);
}
return this._siaHasConvictions;
}
}
答案 1 :(得分:0)
使用@Patrick Hofman的第二段代码 NOT 保证了正确的行为。如果FindControl
方法每次调用时都会返回不同的值,则此实现会出错,因为_siaHasConvictions
一旦设置就不会再被更改。
然而,我受到了@Patrick Hofman关于使用属性的想法的启发,您可以在您的Property中使用??
运算符来使事情变得更加容易:
private RadioButtonList _siaHasConvictions;
private RadioButtonList SiaHasConvictions
{
get { return this._siaHasConvictions ?? (this._siaHasConvictions = (RadioButtonList)CriminalityInformationFormViewDisposal.FindControl(ContactEntity.SIA_HASCOVICTIONS)); }
}
Here是使用??
运算符的解释和一些示例,简而言之:
??
运算符称为null-coalescing运算符。如果操作数不为null,则返回左侧操作数;否则它会返回右手操作数。