2011-02-03 7 views
0

URLの最後にオプションのパラメータを追加して、フォーマットを指定しようとしています。理想的には、次のように動作します。オプションの文字列リテラルをルートURLにどのように追加しますか?

localhost/details/42localhost/details/42.xmlは同じ動作を指します。

は現在、私は、私は1つのルートの定義でこれを行うしたいと思い、この

routes.MapRoute("with_Format", "Details/{id}.{format}", 
    new { controller = "Person", action = "Details" }); 
routes.MapRoute("without_format", "Details/{id}", 
    new { controller = "Person", action = "Details" }); 

のようなルートを定義しました。私は"Details/{id}{format}, new { format = UrlParameter.Optional}のようなオプションのURLセグメントを追加できることを知っています。ただし、リテラル文字で区切られていない2つのパスセグメントを持つことはできません。 .{format}をオプションにする方法はありますか?これを行うには2つのルートを使用する必要がありますか?

答えて

1

すべての場合に値が必要な場合は、セパレータとフォーマットをオプションとして保持したり、デフォルトに設定したりできます。これは、ルートをデフォルトに似ています:

routes.MapRoute(
    "OptionalFormat", 
    Details/{id}.{format}, 
    new { controller = "Person", action = "Details", format = UrlParameter.Optional /* or "xml" */ } 
); 

formatセグメントを進める何もないので、それはそれゆえ、オプションすることができます。非オプションで何かがあり、その後にデフォルトがない場合は、常にformatを指定する必要があります。しかし、あなたの場合、formatは最後のセグメントです。

オプションのパラメータとして指定します(つまり、フォーマットが指定されていない場合は何も行いません)。デフォルト値を指定します(何も指定されていなくても)。

関連する問題