asp: RequiredFieldValidator с содержимым, являющимся строкой таблицы - PullRequest
2 голосов
/ 14 декабря 2010

У меня есть следующий код, который на мой взгляд выглядит хорошо, кто-нибудь может подсказать, почему он не работает?

<tr>
  <td>
    <asp:TextBox ID="PurchaserEmailTextBox" runat="server" CssClass="type-text" />
  </td>
  <td>
  </td>
</tr>

<asp:RequiredFieldValidator ControlToValidate="PurchaserEmailTextBox" ID="RequiredFieldValidator5" Display="Dynamic" runat="server">
  <tr>
    <td colspan="2">
      <span class="error">You need a purchaser email</span>
    </td>
  </tr>
</asp:RequiredFieldValidator>

Проблема в том, что валидатор отображает нормально, но отказывается исчезать при правильном заполнении электронного письма.

Спасибо!

Ответы [ 3 ]

1 голос
/ 14 декабря 2010

Я тестировал следующий фрагмент кода, и он работает для меня в IE8 (я ничего не менял):

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
     <table>
        <tr>
            <td>
                <asp:TextBox ID="PurchaserEmailTextBox" runat="server" CssClass="type-text" />
            </td>
            <td>
            </td>
        </tr>
        <asp:RequiredFieldValidator ControlToValidate="PurchaserEmailTextBox" ID="RequiredFieldValidator5"
            Display="Dynamic" runat="server">
                <tr>
                   <td colspan="2">
                     <span class="error">You need a purchaser email</span>
                   </td>
                 </tr>
        </asp:RequiredFieldValidator>
    </table>
    <asp:Button Text="OK" runat="server" />
</asp:Content>

Однако IE6, FF, Chrome все терпят неудачу, но я думаю, что вы могли бы решить эту проблему, заменив причудливую разметку 'table' на div, например, так:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <div>
        <asp:TextBox ID="PurchaserEmailTextBox" runat="server" CssClass="type-text" />
    </div>    
    <asp:RequiredFieldValidator ControlToValidate="PurchaserEmailTextBox" ID="RequiredFieldValidator5"
        Display="Dynamic" runat="server">
            <div>
                <span class="error">You need a purchaser email</span>
            </div>
    </asp:RequiredFieldValidator>
    <asp:Button Text="OK" runat="server" />
</asp:Content>
0 голосов
/ 11 декабря 2015

Я бы сказал, просто используйте элемент div вместо вашего табличного способа отображения.

<div>
    <asp:TextBox ID="PurchaserEmailTextBox" runat="server" CssClass="type-text" />
    <asp:RequiredFieldValidator ControlToValidate="PurchaserEmailTextBox" ID="RequiredFieldValidator5" Display="Dynamic" runat="server" ErrorMessage="You need a purchaser email"  />
</div>

Он отлично работает в моих приложениях

0 голосов
/ 14 декабря 2010

Это разметка, представленная валидатором:

<table>
    <tr>
        <td>
            <input name="PurchaserEmailTextBox" type="text" value="asdf" id="PurchaserEmailTextBox" />
        </td>
        <td>
        </td>
    </tr>
    <span id="RequiredFieldValidator5" style="color:Red;display:none;">
            <tr>
               <td colspan="2">
                 <span>You need a purchaser email</span>
               </td>
             </tr>
    </span>
</table>

Проблема в том, что внутри элемента таблицы есть элемент span, что недопустимо. http://www.w3.org/TR/html401/struct/tables.html#edef-TABLE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...