RequiredFieldValidator для запроса ModalPopupExtender

У меня есть куча RequiredFieldValidators на странице, и я хотел бы, чтобы ErrorMessage="" отображался в ModalPopupExtender, а не на странице. Поэтому, когда они нажимают «Отправить», а текстовое поле не заполнено, ModalPopupExtender появится на экране и скажет «Требуется текстовое поле», а не на странице, где размещен RequiredFieldValidator.

Вот пример моего кода (публикация всей моей страницы была бы слишком большой):

<form id="form1" runat="server">
<div class="container">
<div class="row">
        <div class="span3">
            <div class="control-group">
                <asp:Label ID="NameLbl" class="control-label required" runat="server" Text="Name"></asp:Label>
                <div class="controls">
                    <asp:TextBox ID="NameTxtBox" class="span3" runat="server"></asp:TextBox><span
                        class="help-block"><asp:RequiredFieldValidator ID="NameRFV" class="RFV" runat="server"
                            ErrorMessage="Name is Required" ControlToValidate="NameTxtBox"></asp:RequiredFieldValidator></span>
                </div>
            </div>
        </div>
         <div class="span3">
            <div class="control-group">
                <asp:Label ID="Email" class="control-label required" runat="server" Text="Email"></asp:Label>
                <div class="controls">
                    <asp:TextBox ID="EmailTxtBox" class="span3" runat="server"></asp:TextBox><span
                        class="help-block"><asp:RequiredFieldValidator ID="EmailRFV" class="RFV" runat="server"
                            ErrorMessage="Required" ControlToValidate="EmailTxtBox"></asp:RequiredFieldValidator></span>
                </div>
            </div>
        </div>
      </div>
     <asp:Button ID="Button1" class="btn btn-primary" runat="server" Text="Submit"
                OnClick="Submit_Click" />
     </div>
    </form>

    <asp:scriptmanager id="ScriptManager1" runat="server">
            </asp:scriptmanager><asp:ModalPopupExtender ID="ModalPopupExtender1" cancelcontrolid="btnCancel"
targetcontrolid="Button1" popupcontrolid="SavePopup" 
backgroundcssclass="ModalPopupBG" runat="server">
            </asp:ModalPopupExtender>
            <asp:panel id="SavePopup" style="display: none" runat="server">
            <div class="ModalPopup">
            <h4>Fields Missing!</h4>
                <p>Name is Required, Email is Required.</p>
                <input id="btnCancel" type="button" value="Close" /></div>
         </asp:panel>

Вот макет того, как я хочу, когда пользователь нажимает кнопку «Отправить», он должен увидеть всплывающее окно модели, подобное этому, говорящее, какие поля пусты.

введите здесь описание изображения

Любые идеи о том, как это сделать? Сохраняю ли я обязательные валидаторы полей внутри modalpopupextender, но как мне определить, активируется ли modalpopupextender, я не хочу, чтобы он появлялся, если во всех полях есть текст внутри них.


person techora    schedule 03.05.2013    source источник


Ответы (2)


Я обнаружил инструмент ValidationSummary и использовал его, чтобы получить всплывающее окно при отправке:

<asp:ValidationSummary ID="ValidationSummary1" HeaderText="You're missing a required field:" EnableClientScript="true" ShowMessageBox="true" ShowSummary="false" runat="server" />

ShowMessageBox = "true" - это то, что дало мне всплывающее окно.

person techora    schedule 10.05.2013
comment
Хороший ответ, я просто хочу добавить, что вам нужно установить для ValidationGroup то же значение, что и для элементов управления Validator, по которым вы хотите суммировать. - person Hugo Nava Kopp; 08.04.2016

Вы можете использовать что-то вроде этого;

<script type = "text/javascript"> function isPageValid() {
  var validated = Page_ClientValidate('YourGroupName');
  if (validated) {
    var mdlPopup = $find('myModalPopup');
    if (mdlPopup) {
      mdlPopup.show();
      return false;
    }
  }
} </script>

person CaptainTurk    schedule 07.10.2015