ひっそりと生きるプログラマのブログ

日頃気になった事なりを書き留めるブログです。関心ごとは多くもう少し更新頻度を上げたいところです。

ASP.NET MVC View の関数化(@helper)

同じビューで似た処理が複数あるな。
とか
部分ビューにする程ではないけど、他のビューでも似たような処理をしているな。

とか、View作成中に似たり寄ったりの View があった際に、
共通化なりできないかで調べました。


共通化については拡張メソッドにて対応する事も可能ですが、
以下のように @helper を使用する事でも対応可能です。


で、以下は例です。
例では、 FizzBuzz を関数として定義しています。

@helper FizzBuzz(int value)
{
var isFizz = (value % 3) == 0;
var isBuzz = (value % 5) == 0;

if (isFizz && isBuzz)
{
        <span>FizzBuzz</span>
}
else if (isFizz)
{
        <span>Fizz</span>
}
else if (isBuzz)
{
        <span>Buzz</span>
}
else
{
        <span>@value</span>
}
}

@using (Html.BeginForm("Submit", "Home"))
{
    <table>
        @for (var index = 1; index < this.Model.LoopCount; index++)
        {
            <tr>
                <td>@FizzBuzz(index)</td>
            </tr>
        }
    </table>

    <input type="submit" />
}

App_Code へ移動する事で異なる View からでも参照可能なようですね。