我的网站主要是一套通过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模式。