2009-06-11 5 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. Затем спрячьте старую форму с помощью javascript. Идея, о которой говорил и другой человек, также будет работать, но мне нравится использовать местозаполнитель.

Я думаю, что все это действительно зависит от того, что вы хотите делать с формами, и насколько плохо вы хотели бы использовать код для другой формы, лежащей на странице, или нет.

1

Если я понимаю, что вам нужно, на событие щелчка:

Response.Redirect «newpage.aspx»

+0

да, возможно, это , но есть ли способ сделать это без перенаправления на другую страницу? –

+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> 

А в коде позади:

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/Javascript, вот что я хотел бы сделать первый:

1) код две формы, поместите их в отдельных divs 2) с помощью CSS скрыть один div на загрузке страницы 3) затем поместите кнопку на странице, в событии кнопки onlick покажите вторую форму и скройте первый.

Убедитесь, что у вас только один тег формы, но в нем два divs, которые вы будете скрывать/показывать. Имейте в виду, что форма может быть отправлена ​​только на свою страницу, это 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() изменит атрибут отображения дивы.

1

Возможно, это не самое лучшее решение «Ajaxy», но вы можете использовать iframe, с установкой src в расположение форм.

1

НЕ разрешено иметь более 1 форму runat = "server" на странице asp.net. Что вы можете сделать, это создать 2 панели на вашей странице 1, если свойство Visible установлено на false. Затем, когда нажата кнопка в обработчике событий, вы устанавливаете для свойства Visisble значение true, а другое значение 1 - false. Оберните панель в UpdatePanel, чтобы избавиться от обратной передачи.

<asp:UpdatePanel><ContentTemplate> 
<asp:Panel ID="pnl1" runat="server"> 
    <asp:Button OnClick="Button_CLick" /> 
</asp:Panel> 
<asp:Panel ID="pnl2" runat="server" Visible="false"> 
</asp:Panel></ContentTemplate></asp:UpdatePanel> 

код в обработчике Button_CLick будет тогда pnl1.Visible = false; pnl2.Visible = true;

+0

Действительно? Что не позволяет? Потому что я просто попробовал это на своей локальной машине, и все получилось нормально. –

+0

Что, это странно, раньше никогда не работало (так вот почему я никогда не пробовал больше). ASP.NET не сможет отличить, в какой форме он находится. Page.Form больше не работает, например. – Colin

+1

Вы можете иметь только одну форму с атрибутом runat VISIBLE за раз. См. Http://msdn.microsoft.com/en-ca/magazine/cc163736.aspx – sarsnake

1

Вы должны знать об управлении MultiView ASP.NET. Это требует обратной передачи для изменения представлений, и это довольно тяжело для ViewState, но его вариант для рассмотрения.

1

Ну, есть несколько способов сделать это, я полагаю. Исправляя tekBlues, вы можете сделать Server.Transfer «yourpage.aspx». Затем вы можете использовать свойство PreviousPage для доступа к данным со старой страницы.

Вы можете использовать элементы управления пользователя и местозаполнитель на главной странице. Конечно, динамически загруженные элементы управления обладают дополнительной сложностью.

Вы можете использовать элемент управления MultiView. Asp.Net будет поддерживать все вары для вас. Полезно для быстрого и грязного.

Все это все веб-решения. Если вы ищете решение AJAX, возможно, вам придется искать ответы.

1

Используйте AJAX для загрузки содержимого другой страницы на ту же страницу.

Используйте Response.Redirect или Server.Transfer для перехода на следующую страницу.

Смежные вопросы