2014-05-13 5 views
1

마스터 페이지에서 여러 텍스트 상자에 액세스해야합니다. 텍스트 상자는 별도의 웹 컨트롤에서 선언되며 텍스트 상자의 이름을 호출 할 수 없도록 데이터 상자에 텍스트를 채울 수 있습니다. 말했듯이 여러 텍스트 상자가 있지만 예를 들어 txtName에 글을 쓰려고 할 때 디자인보기를 클릭해도 그것이 나타나지 않습니다.마스터 페이지의 웹 컨트롤에서 텍스트 상자에 액세스

아무도 도와 줄 수 있습니까?

+1

가능한 [콘텐츠 페이지에서 마스터 페이지 컨트롤에 액세스하는 방법] (http://stackoverflow.com/questions/15573505/how-to-access-master-page-control-from-content-page) – Paddy

+0

@ Paddy OP는 그 링크와 정반대로 설명했다. 그 중복되지 않습니다. ''텍스트 상자는 별도의 웹 컨트롤 "로 선언됩니다. – Bharadwaj

+0

@Bharadwaj - 네가 옳은지도 모르겠지만 마스터 페이지에서 콘텐츠 페이지에 액세스하는 방법을 보여주는 답변이 있습니다. http://stackoverflow.com/questions/4979669/how-to -access-content-page-controls-master-page-in-asp-net? rq = 1 그러나이 방법이 실제로 권장되는 방법인지는 잘 모르겠습니다. – Paddy

답변

2

웹 컨트롤의 텍스트 상자를 속성으로 노출하십시오.

public virtual TextBox TxtName { get {return txtName;} //note capitalization 

webcontrol.ascx.cs

에서 webcontrol.ascx

<asp:TextBox runat="server" id="txtName" /> 

에서

그런 다음 웹 컨트롤을 노출 마스터 페이지에서 같은 일을. mastermage.master.cs

그런 다음 마스터 페이지가 강하게 MasterType 지시문을 추가하여 콘텐츠 페이지에서 입력 만든다
public virtual MyWebControl myWebControl{get {return myWebControl1;}} 

에서 masterpage.master

<uc1:MyWebControl runat="server" id="MyWebControl1" /> 

에서

.

<%@ MasterType TypeName="MyMasterPageClass" /> 

default.aspx에

에서

그런 다음 당신은 뒤에 콘텐츠 페이지 코드에서 액세스 할 수 있습니다. 하여 default.aspx.cs에서

Master.myWebControl.TxtName.Text="Hello, world!"; 

는이 작업을 수행하는 것이 필요 이유는 .ASPX,의 .ascx 및 .master 페이지에 선언 된 컨트롤 대신 publicprotected을하고있는 방법은 (지금 현재) 거기에 없다는 것입니다 내가 알고있는 것을 바꿀 수있어. 따라서 우리는 속성을 사용하여 이러한 컨트롤을 공개적으로 노출 할 수 있습니다.

관련 문제