2016-09-05 3 views
0

이이 내 코드 숨김 파일이 생성자ASPX - 매개 변수없는 생성자가 매개 변수없는 생성자를 건너 뛰고 호출되는 이유는 무엇입니까?

와는
public NeigaliujuRegistras() 
{ 

} 

public NeigaliujuRegistras(string saliesId) 
{ 
    _saliesId = new Guid(saliesId); 
    //more of very secret bla bla 
} 

다음 코드는 내가 중단 점을 넣으면 요청

oWnd = radopen("CaseCards/Registrai/neigaliuju_registras.aspx?saliesId=" + $("input[name*='hsvSaliesId']").val(), "meow"); 

을 만드는 것입니다

http://localhost:59440/CaseCards/Registrai/neigaliuju_registras.aspx?saliesId=5b8c3abc-4eec-4d69-b66a-25c7f27a2187 

브라우저의 HTTP 요청입니다 두 생성자에서, 나는 laoding 할 때 매개 변수없는 생성자로 들어가고 매개 변수화 된 생성자는 결코 호출되지 않는다는 것을 알 수 있습니다.

이 결과는 _saliesID이고, 결과는 {00000000-0000-0000-0000-000000000000}입니다.

왜 매개 변수없는 생성자가 매개 변수없는 생성자를 호출합니까?

답변

2

이것은 ASP .Net 프레임 워크가 이러한 인스턴스를 생성하는 방법입니다.

Request.QueryString 개체에서 saliesId를 얻을 수 있으므로 특별한 경우에는이 생성자가 필요하지 않습니다. 여전히 이것을 생성자에 넣고 싶다면 다음과 같이 할 수 있습니다.

public NeigaliujuRegistras() 
{ 
    // attach a handler to the Init event so to make sure the Request object is available. 
    this.Init += (_o, _e) => { 
     saliesId = new Guid(Request.QueryString["saliesId"]); 
    }; 
} 

또는 코드를 Page_Load 메서드에 배치하면됩니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    saliesId = new Guid(Request.QueryString["saliesId"]); 
} 
+0

Adrian, 저는 수동으로 매개 변수를 구문 분석해야한다는 것을 알지 못했습니다. 프레임 워크가 매개 변수를 구문 분석하고 일치하는 생성자를 선택하는 ASP.NET MVC와 같은 방식으로 작동한다고 생각했습니다. – evictednoise

+0

환영합니다! 어느 ASP도 .Net MVC는 이런 식으로하지 않습니다. ASP .Net MVC는 다른 메서드 (컨트롤러 작업)에서이 매핑을 수행합니다. 의존성을 주입 할 수있는 생성자를 정의 할 수 있습니다. –

관련 문제