2013-10-04 3 views
5

Я использую самозагрузки модальность в моей странице asp.net, как это:Textboxes пустуют на постбэка с начальной загрузки модальный asp.net

<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" 
      aria-hidden="true"> 
<asp:UpdatePanel ID="ModalUpdatePanel" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btnRegister" EventName="Click" /> 
    </Triggers> 
    <ContentTemplate> 
     <p> 

textboxes here 


<div class="popup-footer-wrapper"> 
       <div class="popup-footer-left"> 
        <%-- <input type="submit" class="login-button" name="login-button" value="Sign Up">--%> 
        <asp:Button ID="btnRegister" runat="server" CssClass="login-button" OnClick="btnRegister_Click" 
         UseSubmitBehavior="false" Text="<%$ Resources: HRGELoggedOutMaster, Signup %>" /> 

       </div> 
      </div> 

     </p> 
    </ContentTemplate> 
</asp:UpdatePanel> 
</div> 

я вижу, что внутри

protected void btnRegister_Click(object sender, EventArgs e) 

все texboxes показать пустое значение. любой тип пользователя в текстовом поле. Пожалуйста, предложите, как это исправить. Это может быть из-за UseSubmitBehavior = "false", но если я его не использую, тогда управление не переходит к событию onclick.

+0

Вы получили решение? –

ответ

-2

Используйте текстовое поле dotnet или добавьте идентификатор и тег сервера runat в поле ввода.

+0

Почему пустые голоса? Научи меня !! – Greg

6

Причина, по которой вы не видите ваши опубликованные значения, заключается в том, что ваши значения не публикуются. Модальный менеджер bootstrap использует элемент body как корневой элемент, к которому он добавляет ваши модальности. В результате ваши модалы теперь находятся вне элемента 'form', и значения не отправляются обратно на сервер.

Чтобы это исправить, изменить значение по умолчанию свойства «менеджер» следующим образом:

// Note the manager is passed to the root form element. 
// Otherwise, the modals are taken out of the form and 
// values not posted back to the server 
$.fn.modal.defaults.manager = $.fn.modalmanager.defaults.manager = 'body form:first'; 

EDIT: Это предполагает, что вы используете Bootstrap-Modal Extension

+0

Пожалуйста, есть решение для bootstrap 3, которое не требует дополнительного компонента js? –

+0

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

+0

он работает очень хорошо! +1 –

1

Стивен Андерсон прав, значения не публикуются, поскольку модальные входы находятся вне формы.

Мне удалось обход этой проблемы с помощью javascript, чтобы скопировать значение модальных входов в скрытые элементы управления asp.net.

создать скрытый элемент управления asp.net вне модальных:

<asp:HiddenField ID="MyHiddenControl" value="name" runat="server" /> 

Модального текстовое поле я хочу представить:

<asp:TextBox ID="FormYourName" CssClass="form-control" runat="server"/>` 

Моей модальная кнопка представить выглядит следующим образом;

<asp:Button ID="BtnSubmit" runat="server" Text="Submit" CssClass="btn btn-primary" OnClientClick="Javascript:DoCustomPost();" UseSubmitBehavior="false" /> 

функция My JavaScript выглядит следующим образом:

function DoCustomPost() 
{ 
var ModalTextBox = document.getElementById("FormAmenity"); 
var HiddenTextBox = document.getElementById("MyHiddenControl"); 
// This is the value I want to Post 
MyHiddenControl.value = ModalTextBox.value 
} 

Так что, когда я нажимаю «отправить» в моем модальном окне постбэк пинки, значение текстового поля копируется в скрытый контроль, и я могу читать значение от скрытого управления в коде:

Protected Sub BtnSubmit_Click(sender As Object, e As EventArgs) Handles BtnSubmit.Click 
Dim Something As String = MyHiddenControl.Value 
End Sub 
+0

Отличный ответ. Благодаря! –

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