パラメータを含んだルーティング
それから、「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が実現できていることが分かる。