2009-06-11 2 views
-1

에서 여러 양식을 클릭하면 동일한 aspx 페이지에서 완전히 다른 양식을 표시 할 수 있습니까? 제발 vb.net 경험이 있지만 asp.net 거의 없다. 클릭 이벤트에, 당신이 필요한 답변asp.net

+0

이제 나는 그것에 대해 생각해 보았습니다. 질문에 대해 좀 더 자세히 설명해 드리겠습니다. 주어진 정보를 바탕으로 여러 가지 다른 방법이 있습니다. –

+0

나는 폼이 무엇을 의미하는지 명확히해야한다고 생각한다. 양식 입력과 같은 양식을 의미한다면 다중보기 제어와 같은 기능이 잘 작동합니다. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.multiview.aspx – RichardOD

답변

1

코드를 사용하여 페이지를로드 한 다음 placeHolder에 배치합니다. 그리고 자바 스크립트를 사용하여 이전 양식을 숨 깁니다. 다른 사람이 말한 아이디어는 효과가 있지만, 나는 자리 표시자를 사용하는 것을 좋아합니다.

나는 여러분이 폼으로 무엇을하고 싶은지, 페이지에 놓여있는 다른 폼의 코드가 얼마나 좋을지에 대해 정말로 결정적이라고 생각합니다.

1

이해하면 주셔서 대단히 감사합니다 :

Response.Redirect를 "newpage.aspx"

+0

예 아마도 thats it 하지만 다른 페이지로 리디렉션하지 않고이 작업을 수행 할 수있는 방법이 있습니까? –

+1

Server.Transfer? 기술적으로는 리디렉션을 수행하지 않습니다. – RichardOD

1

가 같은 페이지에 양식의 각 만들기 하나는 visible = true이고 다른 하나는 visible = false이고, 사용자가 해당 버튼을 클릭하면 가시성을 전환합니다.

<form id="Form1" runat="server" visible="true"> 
<div> 
    <asp:Button ID="Button1" runat="server" Text="Show Form 2" onclick="Button1_Click" /> 
</div> 
</form> 

<form id="Form2" runat="server" visible="false"> 
<div> 
    <asp:Button ID="Button2" runat="server" Text="Show Form 1" onclick="Button2_Click" /> 
</div> 
</form> 

그리고 뒤에있는 코드에서

:

1) 코드까지 두 가지 형태를 배치 :

protected void Button1_Click(object sender, EventArgs e) 
{ 
    this.form2.Visible = true; 
    this.form1.Visible = false; 
} 

protected void Button2_Click(object sender, EventArgs e) 
{ 
    this.form2.Visible = false; 
    this.form1.Visible = true; 
} 
+0

그것은 말합니다 오류 'Button2_Click'은 'ASP.default_aspx'의 구성원이 아닙니다. –

+0

같은 오류가 발생하고 있습니까? –

+0

onclick 속성을 올바르게 설정하고 Button2_Click이 코드 숨김에 있는지 확인하십시오. 이것들이이 문제의 가장 명백한 원인입니다. –

1

당신은 CSS/자바 스크립트와 함께 할 수있는, 여기에 내가 먼저 할 것 인 것이다 별도 div에 2) CSS를 사용하여 페이지 div에 div를 숨 깁니다. 3) 페이지에 버튼을 놓고 onlick 버튼 이벤트에서 두 번째 양식을 숨기고 첫 번째 양식을 숨 깁니다.

하나의 양식 태그 만 있지만 숨기거나 감출 수있는 두 개의 div가 있어야합니다. 그 양식은 asp.net의 자체 페이지에만 제출할 수 있다는 것을 명심하십시오. 당신의 HTML에

:

다음
<form runat="server" id="myForm"> 

<div id="myForm1"> 
<! -- form 1 code goes here -- !> 
</div> 

<div id="myForm2"> 
<! -- form 2 code goes here -- !> 
</div> 

<input type="button" onclick="toggleVisibility();" /> 

</form> 

당신의 CSS

#myForm1 { 
display: none; 
} 

그런 ToggleVisibility (의)가 된 div의 표시 속성을 변경합니다.

1

아마도 가장 "Ajaxy"해결책은 아니지만 src를 양식 위치로 설정하여 iframe을 사용할 수 있습니다.

1

asp.net 페이지에서 1 양식 runat = "server" 이상을 가질 수 없습니다. 당신이 할 수있는 일은 Visible 속성을 false로 설정하고 페이지에 2 개의 패널을 만드는 것입니다. 그런 다음 이벤트 핸들러에서 버튼을 클릭하면 Visisble 속성을 true로 설정하고 다른 하나는 false로 설정합니다. 포스트 백을 제거하려면 UpdatePanel에 패널을 래핑하십시오.

Button_CLick 핸들러의 코드는 pnl1.Visible = false; pnl2.Visible = true;

+0

정말요? 그것을 허용하지 않는 것은 무엇입니까? 왜냐하면 난 그냥 내 로컬 컴퓨터에서 그것을 시도하고 괜찮 았어. –

+0

그게 이상한데, 결코 작동하지 않아서 (그래서 내가 왜 더 이상 한번도 시도한 적이 없는지). ASP.NET은 폼이 어떤 폼인지 구분할 수 없습니다. Page.Form은 더 이상 작동하지 않습니다. – Colin

+1

한번에 runat 속성 VISIBLE이있는 ONE 서식 만 가질 수 있습니다. http://msdn.microsoft.com/en-ca/magazine/cc163736.aspx – sarsnake

1

ASP.NET의 MultiView 컨트롤을 알고 있어야합니다. 보기를 변경하기 위해서는 다시 게시가 필요하며 ViewState에서는 다소 부담이되지만 고려해야 할 옵션입니다.

1

글쎄, 내가 생각하는 몇 가지 방법이있다. tekBlues를 해제하면 Server.Transfer "yourpage.aspx"를 수행 할 수 있습니다. 그런 다음 PreviousPage 속성을 사용하여 이전 페이지의 데이터를 가져올 수 있습니다.

사용자 정의 컨트롤과 기본 페이지의 자리 표시자를 사용할 수 있습니다. 물론 동적으로로드 된 컨트롤에는 추가 복잡성이 있습니다.

MultiView 컨트롤을 사용할 수 있습니다. Asp.Net은 모든 vars를 유지합니다. 빠르고 더러운 것을 유용합니다.

이들은 모두 웹 양식 솔루션입니다. AJAX 솔루션을 찾고 있다면 답변을 계속 찾아야 할 수도 있습니다.

1

AJAX를 사용하면 다른 페이지의 내용을 같은 페이지에로드 할 수 있습니다.

Response.Redirect 또는 Server.Transfer를 사용하여 다음 페이지로 이동하십시오.