SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(Secure Mail)

Windows Azure上で「Secure Mail 2.0J」を使ってみよう
~最新の環境で日本語メールを送信する~

  • このエントリーをはてなブックマークに追加

Viewデザイン

 ロジック部分が完成したら、コントローラへモデルに記述したロジックを呼び出すコードを記入します。Index関数が2つあるのは、パラメタなしが対応するViewを呼び出したときに実行される関数と、HttpPost属性がついたパラメタありが対応するViewからSubmitされたときに実行される関数の2種類を用意する必要があるためです。

リスト3 コントローラの記述例
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Public Property SendMailService As New SendMailService

    Function Index() As ActionResult
        ViewData("Message") = "ASP.NET MVC へようこそ"

        Return View()
    End Function

    <HttpPost()> _
    Function Index(ByVal model As SendMailModel) As ActionResult
        If ModelState.IsValid Then
            Dim result As String = ""
            If SendMailService.SendMail(model.SmtpServer,
                                        model.SmtpPort,
                                        model.UserID,
                                        model.Password,
                                        model.MailAddress,
                                        model.ToAddress,
                                        model.Subject,
                                        model.Body,
                                        result) Then
                Return RedirectToAction("Thanks", "Home")
            Else
                ModelState.AddModelError("", result)
            End If
        End If
        Return View(model)
    End Function

    Function Thanks() As ActionResult
        Return View()
    End Function
End Class
  1. Index関数では画面入力をパラメタとして引き取ります。パラメタの形式は、対応するモデルになります。
  2. ModelStateのIsValidプロパティがFalseならば「入力値に違反がある」ということなので、すぐにReturn View(model)に制御が移ります。
  3. SendMailService.SendMailメソッドがTrue(メール送信成功)であれば、/Home/Thanks/ページに遷移します。

ビューの作成

 [Views]-[Home]フォルダにあるIndex.vbhtmlファイルを開いて、SendMailModelクラスで定義された項目をHTMLの中に埋め込んでいきます。

リスト4 ビューの記述例
@ModelType CZ1106Mvc3.SendMailModel
  
@Code
    ViewData("Title") = "ホーム ページ"
End Code

<h2>@ViewData("Message")</h2>
@Using Html.BeginForm()
    @Html.ValidationSummary(True, "メール送信に失敗しました。エラーを修正し、再試行してください。")
    @<div>
        <fieldset>
            <legend>メール送信</legend>
            <div class="editor-label">
                @Html.LabelFor(Function(m) m.SmtpServer)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(Function(m) m.SmtpServer)
                @Html.ValidationMessageFor(Function(m) m.SmtpServer)
            </div>
                :
                (中略)
                :
            <p>
                <input type="submit" value="送信" />
            </p>
        </fieldset>
    </div>
End Using

 今回のViewはビューエンジンに「ASPX」ではなく「Razor」を採用しているため、HTMLにかなり近い記法になっています。

 Razorらしい記述の1つとして、HTMLヘルパーによるレンダリングがあります。@Html.LabelFor、@Html.TextBoxFor、@Html.ValidationMessageForはすべて「Function(m) m.SmtpServer」というラムダ式をパラメタとして指定していますが、この3つのレンダリング結果はそれぞれ異なります。

  • @Html.LabelFor:LabelForはSmtpServerプロパティのDisplay属性の設定値を表示するHTMLヘルパーなのでレンダリング結果はDisplay属性に指定されている「SMTPサーバ」になります。
  • @Html.TextBoxFor:TextBoxForはSmtpServerプロパティの値をINPUTタブとして表示入力するHTMLヘルパーになります。
  • @Html.ValidationMessageFor:ValidationMessageForはSmtpServerプロパティのRequired属性などのValidation関連の設定値を該当するValidationが発生したときに表示するためのHTMLヘルパーになります。

次のページ
開発環境での実行

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(Secure Mail)連載記事一覧
この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6003 2011/06/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング