Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

検証コントロールの表示位置を動的に調整する

ASP.NETのエントリは「プログラミングMicrosoft ASP.NET 3.5」を元に進めていく予定でしたが、挫折しました... 先に赤間本から学びたいと思います。

今回は検証コントロールを使ってエラーメッセージを表示します。

aspxのソースコード

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DynamicPosition.aspx.cs" Inherits="DynamicPosition" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <table style="width:100%;">
        <tr>
            <td>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator
                    ID="RequiredFieldValidator1"
                    runat="server"
                    ControlToValidate="TextBox1"
                    ErrorMessage="RequiredFieldValidator"
                    Text="*"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td>
                <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator 
                    ID="RequiredFieldValidator2" 
                    runat="server" 
                    ControlToValidate="TextBox2"
                    ErrorMessage="RequiredFieldValidator"
                    Text="*"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td>
                <!-- 複数の検証コントロールをもつテキストボックス -->
                <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
                <asp:RequiredFieldValidator
                    ID="RequiredFieldValidator3"
                    runat="server"
                    ControlToValidate="TextBox3"
                    ErrorMessage="RequiredFieldValidator"
                    Text="*"></asp:RequiredFieldValidator>
                <asp:RangeValidator
                    ID="RangeValidator1"
                    runat="server"
                    ControlToValidate="TextBox3"
                    ErrorMessage="RangeValidator"
                    Text="*"
                    MinimumValue="0"
                    MaximumValue="10"></asp:RangeValidator><asp:RegularExpressionValidator

                </asp:RegularExpressionValidator>                
            </td>
        </tr>
    </table>
    <asp:Button ID="Button1" runat="server" Text="Button" />
    </form>
</body>
</html>

アプリ実行


複数の検証コントロールをもつテキストボックスだけ、エラーメッセージがずれています。

各Validatorに「Display="Dynamic"」を追加してから再度実行します。

今度は位置が調整されて表示されました。