USERCONTROL 부동산의 기본값
-
03-07-2019 - |
문제
몇 가지 부울 속성이있는 usercontrol이 있습니다. .aspx 페이지에서 명시 적으로 설정하지 않으면 기본적으로 true로 설정되거나 기본값을 설정할 방법이 없으면 최소한 선언하도록 강요합니다. 많은 컨트롤이 앱을 실행하려고 할 때 앱을 끊는 속성이 필요하고 선언되지 않았기 때문에이 작업을 수행 할 수있는 방법이 있다는 것을 알고 있습니다.
어떻게해야합니까?
예시:
<je:myControl runat="server" id="myControl" showBox="False">
Showbox 가이 선언에서 제외 된 경우 시스템이 기본값을 "True"로 설정하기를 원합니다.
감사!
해결책
다음과 같은 기본값으로 속성을 정의하십시오.
private bool _ShowBox = false;
public bool ShowBox
{
set { _ShowBox = value; }
}
또는 컨트롤 생성자에서 기본값을 설정하십시오.
public MyControl()
{
_ShowBox = false;
}
또는 할당되지 않은 경우 예외를 던집니다.
private bool _ShowBox = false;
public bool ShowBox
{
set { _ShowBox = value; }
get { return _ShowBox; }
}
다른 팁
내가 늦었지만 그냥 언급하고 싶었어
[DefaultValue(false)]
속성을 False로 설정하지 않습니다. 보다: http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx. 그것은 말한다 :
"DefaultValueAttribute는 멤버가 속성의 값으로 자동 초기화되지 않습니다. 코드에서 초기 값을 설정해야합니다."
이 속성은 Visual Studio Designer에서 기본값으로 간주하는 것을 나타내는 것입니다. 귀하의 컨트롤을 사용하는 사람 이이 값을 변경하면 표시됩니다. 굵게 이 값이 비다의 값임을 알리기 위해.
변수를 선언 할 때 원하는 기본값을 설정합니다.
class myControl
{
private bool _showBox = true;
[PersistenceMode(PersistenceMode.Attribute), DefaultValue(false)]
public bool showBox
{
get { return _showBox; }
set { _showBox = value; }
}
}
선택 사항 디자이너의 DefaultValueatTribute를 추가 할 수 있습니다.
Resharper는 자동 프로퍼티를 사용하고 생성자에서 기본값을 설정하는 것이 좋습니다.
public class MyControl
{
public MyControl()
{
ShowBox = true;
}
public bool ShowBox { get; set; }
}