2011-02-28 6 views
4

컨트롤을했습니다 프로그래밍 방식으로 asp.net 컨트롤의 ID를 변경할 수 있습니까 - ASP.NET

<asp:Button ID="btnAjax" runat="server" Text="Ajaxified" OnClick="btnAjax_Click" /> 

이제 코드 뒤에있는 단추의 ID를 변경하려면

btnAjax.ID = "newButtonID"; 

하지만 이제는 작동 중입니다. 처음부터 가능합니까?

EDIT

코드를 사용하지 않고 HTML 마크 업으로 컨트롤을 만들었습니다.

+0

당신은 할 수 있지만 통화의 뒷면이 필요합니다 거의 확실 해요. 새 ID가 HTML에 반영되도록 컨트롤을 다시 렌더링해야합니다. 어쨌든 왜이 일을하고 싶은지 물어봐도 될까요? – Smur

답변

5

예, 게시 한 코드가 작동합니다.

난 I는 버튼의 ID 후 출력 텍스트 필드의 결과를 변경 버튼 페이지로드 텍스트 필드

<asp:Button ID="button" runat="server" /> 
<input type="text" id="result" name="result" runat="server" /> 

있다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    button.ID = "OtherButton"; 
    result.Value = button.ID; 
} 

텍스트 필드의 결과는 "OtherButton"

3

예. 해당 속성을 읽고 쓸 수 있습니다. [가능].

나는 시도했는데 ID는 변경 될 수 있으며 렌더링 된 HTML에도 반영됩니다.

업데이트

당신이 렌더링 된 HTML에서 ID를 변경하지에 asp.net을 강제로 사용할 수있는 '정적'으로 설정할 수 있습니다 ClientIDMode 속성이 있습니다.

<asp:Button ID="Button1" runat="server" Text="Button" ClientIDMode="Static" /> 
+0

그러나 페이지가 렌더링되는 동안 반영되지 않습니다. – NLV

+0

마크 업에서 컨트롤을 만들었습니다. 어떻게 제어 ID를 변경할 수 있습니까? – NLV

+0

당신은 그 .. .. (미안, 내가 틀 렸었습니다) * .. 내가 시도하고 그 변화가 렌더링 된 HTML에 반영되었지만 asp.net이 모든 서버 컨트롤의 ID 앞에 자체 문자열을 더함을 기억하십시오. –

0

나는 일이 안전하게 클라이언트 스크립트 버튼과 상호 작용할 수 있도록하는 것입니다 같은 것을 달성 할 필요가 상상할 수있는 유일한 이유입니다. 이 경우 다음 내가 스크립트로 컨트롤의 클라이언트 ID를 전달하는 것을 선호 :

var btnAjax = document.getElementById('<%=btnAjax.ClientID%>') 

또는 jQuery를 사용하여 :

$('#<%=btnAjax.ClientID%>') 
관련 문제