Автоматическая обратная передача управления сервером с формой имеет атрибут _blank - PullRequest
1 голос
/ 15 ноября 2011

В моем случае у меня на странице asp.net есть форма

<form id="form1" runat="server" target="_blank">

и кнопка перенаправления на другую страницу, и эта страница откроется в новом окне из-за целевого атрибута формы.

<asp:Button ID="button1" runat="server" PostBackUrl="~/kindofpage.aspx" Text="Generate" />

, и у меня есть выпадающий список с автоматической отправкой = true, чтобы опубликовать прошлое для заполнения другого выпадающего списка по выбранным данным.

<asp:dropdownliast id="Make" name="Make" runat="server" autopostback="true"></asp:dropdownlist>

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

Мне нужен способ публикации страницы в выпадающем списке без открытия пустой страницы ..

Спасибо,

Ответы [ 4 ]

0 голосов
/ 28 июня 2016

Я боролся с подобной ситуацией, но решил ее следующим образом.Как упоминалось в этом ответе , вы можете использовать свойство OnClientClick, чтобы установить для цели значение "_blank".Например,

<asp:Button ID="button1" OnClick="codebehind_method" OnClientClick="document.forms[0].target = '_blank';" runat="server" Text="targets new window" />

Затем на странице aspx, на которую перенаправляет моя функция "codebehind_method", я сбрасываю цель формы открывания следующим образом:

<script type="text/javascript">
function resetTarget() { 
opener.document.forms[0].target = ''; 
}
</script>
<body onload="resetTarget()">

Теперь, если вы идетевернитесь к форме открывания и используйте элемент управления, для которого не установлено свойство «OnClientClick», AutoPostBack должен появиться на той же вкладке.Если вы хотите найти свою форму по идентификатору, замените «document.forms [0]» на:

document.getElementByID('yourFormName')
0 голосов
/ 15 ноября 2011
<form id="form1" runat="server">
0 голосов
/ 15 ноября 2011

Вы всегда можете просто изменить свой код нажатия кнопки, чтобы открыть новое окно, например:

<asp:Button ID="myBtn" runat="server" Text="Click me" 
 onclick="myBtn_Click" OnClientClick="window.open('kindofpage.aspx', 'kindofpage');" />

, а затем удалить:

target="_blank"

из тега формы.

0 голосов
/ 15 ноября 2011

В отсутствие лучшей идеи вы можете просто удалить атрибут target="_blank" из вашей разметки, а когда вы нажмете кнопку, измените тег form с помощью JavaScript и установите атрибут.

Вы можете установить свойство OnClientClick и запускать JavaScript при его нажатии. Например:

<asp:Button ID="button1" OnClientClick="document.getElementById('form1').setAttribute('target', '_blank')" runat="server" PostBackUrl="~/kindofpage.aspx" Text="Generate" />
...