【F# + ASP.NET MVC】 アノテーション検証を行うには その2

◆Entity

namespace MsdnWeb.Entities

open System.Collections.Generic
open System.ComponentModel
open System.ComponentModel.DataAnnotations
open System.Web.Mvc

type Employee() =
    let mutable date = System.DateTime.Today
    let mutable email = ""
    let mutable comfirmEmai = ""
    
    [<DisplayName("日付")>]
    //日付型か検証
    [<DataType(DataType.Date)>]
    member x.Date
        with get() = date
        and set v = date <- v

    [<DisplayName("Eメール")>]
    // Eメール型か検証
    // ※ 入力制限は行われないが、
    //    HTMLヘルパーのDisplayForメソッドで
    //    Eメールソフトへのリンク表示される
    [<DataType(DataType.EmailAddress)>]
    member x.Email
        with get() = email
        and set v = email <- v

    [<DisplayName("確認用Eメール")>]
    // 他のプロパティと同等か検証
    [<Compare("Email",
        ErrorMessage = "{0}は入力されたEメールと異なります。")>]
    member x.ComfirmEmai
        with get() = comfirmEmai
        and set v = comfirmEmai <- v

◆View

@model MsdnWeb.Entities.Employee

@{ Layout = null; }

<!DOCTYPE html>
<html>
<head>
    <title>F# + ASP.NET MVC</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet"
        type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"
        type="text/javascript"></script>
    <!-- クライアントサイド検証を有効に設定-->
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"
        type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"
        type="text/javascript"></script>
</head>
<body>
    <div>
        @using (Html.BeginForm()) {
            @Html.ValidationSummary(true)
            <fieldset>
                <legend>User</legend>
                <div class="editor-label">
                    @Html.LabelFor(model => model.Date)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Date)
                    @Html.ValidationMessageFor(model => model.Date)
                </div>
                <div class="editor-label">
                    @Html.LabelFor(model => model.Email)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.Email)
                    @Html.DisplayFor(model => model.Email)
                </div>
                <div class="editor-label">
                    @Html.LabelFor(model => model.ComfirmEmai)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.ComfirmEmai)
                    @Html.ValidationMessageFor(model => model.ComfirmEmai)
                </div>
                <p>
                    <input type="submit" value="Validate" />
                </p>
            </fieldset>
        }
    </div>
</body>
</html>

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中