パラメータを含んだルーティング

それから、「http://www.example.com/book/123」というように、各ページにパラメータを渡す方法も見ておこう。こちらも非常に簡単で、Controllerのメソッドが引数を取るようにするだけでよい。たとえば、HomeControllerクラスのAboutメソッドを次のように変更してみよう。

    public ActionResult About(string id)
    {
        ViewData["id"] = id.ToString();
        return View();
    }

次に「/View/Home/About.aspx」のh2要素より後の箇所を、次のように変更してみよう。

<h2>About</h2>
<p>
    パラメータの値は<%= Html.Encode(ViewData["id"]) %>です。
</p>

ここで、VS2008でユニットテスト用のプロジェクトを作成している場合、上記の変更を行うことで、テストケースのコードがコンパイルエラーになってしまう。この場合は、コンパイルエラーが発生している箇所である、ユニットテスト用プロジェクトのHomeControllerTest.csのAboutメソッドの2行目を次のように修正すればよい。

ViewResult result = controller.About("123") as ViewResult;

これらの変更を行った後、Webアプリケーションをビルドし、「/Home/About/123」というURLにアクセスしてみよう。すると次のような画面が表示され、確かにCool URIが実現できていることが分かる。