我的網站主要是一套通過Asp.Net Web API公開的Web服務。還有一些頁面,旨在支持Web服務(測試等),用Razor編寫(並隱式地使用Asp.Net MVC 4)。Html.RouteLink到Web API路由 - 可能嗎?
對於XML版本的Web服務,我有一個模式導出操作(使用XsdDataContractExporter
),它是由我的標準API路徑拾取的(儘管注意 - 我翻轉了Web API和Pages的優先級):
//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的HtmlHelper
和UrlHelper
根本不想拿起Web API路由。
我敢肯定,如果我打開Asp.Net MVC 4的源代碼,我會找到原因 - 但我希望有人已經知道,並且因爲我無法找到另一個關於這種交叉鏈接的SO我認爲這是對SO庫的一個很好的補充。
我應該添加瀏覽到~/Schema
和~/Schema.xsd
是否正確顯示由API操作產生的XML模式。