2010-08-17 4 views
2

웹 사이트의 주석 처리 시스템에서 작업하고 있으며 각 포스트 백에서 페이지가 사용자 정의 컨트롤을 생성합니다 ucComment)를이 페이지와 관련된 데이터베이스의 모든 주석에 대해 사용합니다. 각 ucComment에는 각각의 개별적인 댓글에 응답 할 수있는 응답 버튼이 있습니다.ASP.NET 3.5 컨트롤 ID 생성 작업 : 후속 포스트 백에서 컨트롤이 다른 순서로 만들어지는 포스트 백 이벤트

새로운 코멘트가 만들어 질 때마다 다음 포스트 백이 모든 페이지의 컨트롤 ID를 상쇄한다는 것을 마침내 깨달았을 때 응답 버튼에 아무런 문제가 없었습니다. 다시 말해, ctl00_Content_ctl00_ctl01_ctl0 _lbtnRespond를 클릭하면 해당 컨트롤이 실제로 다음 ctl00_Content_ctl00_ctl01_ctl0 으로 생성되고 다음 게시 역에 응답합니다. 그래서 ctl07과 연관된 사건은 단순히 일어나지 않을 것입니다.

웹에서 파고 들기 전에 ClientID를 무시하는 방법에 대해 읽었습니다. 컨트롤을 원하는대로 이름을 붙일 수 있다면 문제를 피할 수 있다고 생각했습니다. http://west-wind.com/Weblog/posts/4605.aspx 위대한 해킹처럼 보였지만 페이지의 생성 된 ID와 ID가 컨트롤 트리에 표시되는 방식이 서로 다르기 때문에 이벤트가 발생하지 않습니다.

도 컨트롤 트리가 포스트 백 일하기 위 해킹을 얻기 위해 작동하는 방식 변경 MasterPage에서 파생 된 사람이있다 : http://www.netquarry.com/index.php/2009/03/master-pages-ajax-and-javascript-10292/ 을하지만 난 말할 수없는 영향이있을 수 있음을 우려하고있다.

주석 달기 시스템이 특정 의견에 응답 할 수 있도록하려면 어떻게해야합니까? 해당 포스트 백에서 컨트롤의 이름이 변경 되더라도 여전히 응답 이벤트가 발생합니까?

답변

2

저는 NetQuarry의 MasterPage 파생 클래스를 작성한 사람입니다.

문제를 해결했는지 여부는 알 수 없습니다. MasterPage 접근 방식에 대한 귀하의 우려를 분명히 이해할 수 있습니다. 나는 그것이 연약 할 수도 있다고 우려했다. 그러나 우리 플랫폼에 구축 된 약 6 개의 서로 다른 웹 응용 프로그램에서 약 1 년 반 동안 잘 작동하고 있습니다. 즉, 모두 플랫폼에서 구축되었으므로 특정 유사점을 갖습니다. 이 코드는 .Net 2.0에서 .Net 3.5로 이동할 때도 문제없이 계속 작동합니다.

그러나 최근에 우리는 UpdatePanels에서 접근 방식이 작동하지 않으며 상황을 개선하지 못했다는 사실을 발견했습니다. 그 문제를 연구하면서 .Net 4.0은 .Net 3.5보다 ClientID를 훨씬 잘 제어 할 수 있으며, 3.5로는 이런 종류의 문제를 해결하는 것이 매우 간단 할 것이라고 생각합니다. 다음은이 약 스콧 오클라호마에서 좋은 기사는 다음과 같습니다

http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx

편집 : 단지이 경우 문제는 단순히 기반으로 고유 ID와 각 주석의 응답 버튼을 렌더링함으로써 해결 될 수 있음을 나에게 발생 관련된 주석 레코드의 기본 키. 그런 식으로 포스트 백에서 각 기존 버튼의 ID는 변경되지 않습니다.

희망이 있으면 도움이됩니다.

+0

와우 그것이 당신입니다! 하하. 나에게 돌아와 줘서 고마워. 사실 모든 것을 변경하고 ASP.NET 4.0으로 옮기기로 결정한이 특별한 문제를 다루는 데는 놀라움을 금치 못했습니다. 내 ClientIDMode를 static으로 설정하고 편집시 언급 한 기술을 사용합니다. 나는 당신의 해결 방법을 인상적으로 생각하며, 이번에는 당신을 위해 일해 온 것이 대단한 것입니다. 응답 해 주셔서 감사합니다. – HaterTot

0

사용자 정의 컨트롤을 생성하는 데 사용되는 서버 측 코드를 게시 할 수 있습니까? 그리고 그들을 호스팅하는 ASPX 페이지?

+0

높은 수준의 해결책이 필요한 상위 수준의 문제라고 생각하므로 도움이 될 것으로 생각하지 않습니다. 클라이언트 ID 생성 문제는 잘 알려진 제한 사항입니다. 이 토론의 목적 상, 저는 여러분이 제가 실수를하지 않고 있고 코드가 혼란을 일으킬 뿐이라는 것을 신뢰한다고 부탁드립니다. 그러나 동의하지 않으면 알려주세요. – HaterTot

+0

내가 원하는 것을 성취 할 수있는 방법이 너무 많기 때문에 물었고, 모든 것을 어떻게 구축했는지 식별 할 수 없으면 실제로 가능하지 않을 것이라고 생각하지 않습니다. 도와 드리겠습니다. –

관련 문제