2012-11-07 7 views
2

나는 MasterPage가있는 간단한 ASP.NET 페이지가 있습니다. 만약 내가 제대로 이해하고Control.UniqueID는 교차 페이지 다시 게시 후 다릅니다.

<input type="text" runat="server" id="ctl00_txtUserName" name="ctl00$txtUserName"/> 
<input type="text" runat="server" id="ctl00_txtPassword" name="ctl00$txtPassword"/> 

name 속성에 해당

컨트롤이 페이지로 렌더링됩니다
<input type="text" runat="server" id="txtUserName"/> 
<input type="text" runat="server" id="txtPassword"/> 

는, ASP.NET은 다음 렌더 다음 MasterPage 내에서, 나는이 개 로그인 필드가 컨트롤의 속성은 UniqueID입니다. 그러나 Page_Load을 디버깅하고이 필드의 UniqueID을 보려고하면 각각 다른 값 (ctl0$txtUserNamectl0$txtPassword)이 표시됩니다.

이 마스터 페이지를 사용하는 모든 페이지에서 문제가되지는 않습니다. 대부분은 올바르게 작동하고 렌더링시 인 경우 ctl0$txtUserNamectl0$txtPassword을 사용합니다.

어떤 이유로 인해 ASP.NET이 Page_Load에서 사용하는 컨트롤과 다른 UniqueID을 렌더링 할 수 있습니까?

답변

0

MasterPage에서 생성 된 고유 ID가 페이지에 렌더링 될 때와 다른 Page_Load를 발생시키는 원인인지 확실하지 않습니다. 그러나이 필드의 고유 ID를 숨겨진 필드에 저장하여이 문제를 해결할 수있었습니다. 그런 다음 Request.Form 컬렉션에서 직접 값에 액세스 할 수있었습니다. 이가 UniqueID의 불확실성으로 어려움을 겪고 다른 사람 도움

string username = Request.Form[Request.Form["txtUserNameUID"]]; 
string password = Request.Form[Request.Form["txtPasswordUID"]]; 

희망 - 자식 페이지를 Page_Load 동안

<input type="text" runat="server" id="txtUserName"/> 
<input type="text" runat="server" id="txtPassword"/> 

<input type="hidden" id="txtUserNameUID" value="<%=txtUserName.UniqueID%>"/> 
<input type="hidden" id="txtPasswordUID" value="<%=txtPassword.UniqueID%>"/> 

- MasterPage에서

: 즉

, 내가 이런 짓을 ASP.NET에서!

0

나는 이상하게 느껴졌다 : 모든 래핑 컨트롤에는 ID가 있어야한다. 예를 들어 컨트롤 주위에 패널이있는 경우, 즉 'ctl00'이 무엇이든간에 ID가 할당되어야합니다. 설정되어 있지 않으면 할당되고 변경 될 수 있습니다.

관련 문제