0

RazorでASP.NETMVC3を使用していますが、このようなURLを受信できるルートを定義したいと思います。私はMVC3を初めて使用することに注意してください。

/State/Florida/Town/Fort_Lauderdale
/State/Texas/Town/Irvine
/State/Alabama/Town/Auburn

これは、「Town」アクションを使用して、既存の「States」コントローラー(StatesControllerクラス)で処理されるようにしたいと思います。私はこのようなものを持っています:

routes.MapRoute(
   "Towns",
   "{controller}/{state}/{action}/{town}",
   new { controller = "States", action = "Town", state= UrlParameter.Optional, town = UrlParameter.Optional }

明らかに、州も町のパラメータもオプションではありませんが、どうすればよいですか?上記のルートは正しくないと思いますが、パラメータがオプションではないことを示す方法はありませんか?

ここでのもう1つの状況は、上記の場合、コントローラーTown(文字列タウン)で1つのアクションでタウンを処理するふりをしましたが、Razorを使用して個々のタウンファイルを解析できる必要があるということです。私は当初、Town()コントローラーメソッドを使用してTownパラメーターを使用して町のHTMLファイルを提供することを考えていましたが、結局のところ、町の説明に動的データを含めることもできます。それは、私の最善の解決策は、専用のタウンコントローラーを作成し、多くのタウンごとに1つのアクションメソッドを作成することであることを意味しますか?

それをよりよく処理するための提案はありますか?

4

1 に答える 1

1

UrlParameter.Optionalを削除するだけです

routes.MapRoute(
    "Towns",
    "{controller}/{state}/{action}/{town}",
    new { controller = "States", action = "Town" }

私は次のようなもっと明確なものを探しに行きます:

routes.MapRoute(
    "Towns",
    "State/{state}/Town/{town}",
    new { controller = "States", action = "Town" }

実際、コントローラーはデフォルトで状態であり、URLで状態であるため、前のタイプ(投稿したものに基づく)にはタイプミスがあります。

于 2012-05-17T15:35:43.947 に答える