私のサイトは主に、Asp.NetWebAPIを介して公開される一連のWebサービスです。Razor(および暗黙的にAsp.Net MVC 4)で記述されたWebサービス(テストなど)をサポートするように設計されたページもあります。
WebサービスのXMLバージョンの場合XsdDataContractExporter
、標準のAPIルートによって取得されるスキーマエクスポートアクション(を使用)があります(ただし、Web APIとページの優先順位を反転しました)。
//page routes
routes.MapRoute(
"Default", // Route name
"pages/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home",
action = "Index",
id = UrlParameter.Optional
} // Parameter defaults
);
//an additional route for my Schema controller action
routes.MapHttpRoute("XSD", "schema.xsd",
new { controller = "schema" });
//API Catch-all Route
routes.MapHttpRoute("APIMain", "{controller}/{id}",
new { id = RouteParameter.Optional });
かみそりのページで、「わかりやすい」スキーマURLへのリンクを出力したいと思います~/Schema.xsd
。ルート検出の問題を予測して、私はすぐに名前で直接ルートにアクセスしました。
@Html.RouteLink("Schema", "XSD");
ただし、これは。と同等のリンクを発行するだけ~/
です。
ルート値の他の組み合わせをいくつか試しましたが、MVCのように見え、WebAPIルートHtmlHelper
をUrlHelper
取得したくないだけです。
Asp.Net MVC 4のソースをクラックして開いた場合、その理由はわかると思いますが、誰かがすでに知っていることを望んでいます。そのようなクロスリンクについて別のSOが見つからないため、私はそれを理解しました。 dはSOライブラリへの良い追加です。
そのブラウジングを追加して、APIアクションによって生成されたXMLスキーマを正しく表示する必要が~/Schema
あります。~/Schema.xsd