与其说是映射到扩展,不如说是 MVC 4 URL 不需要直接对应于文件。相反,您注册路由,这些路由对应于控制器操作。因此,为此,您可以使用以下路线:
/something/page/{ID}
哪个链接SomeController.ShowPage(int ID)
返回一个ViewResult
/something/page/{ID}/xml
哪个链接SomeController.PageAsXML(int ID)
返回一个XDocument
/something/page/{ID}/json which links to
SomeController.PageAsJSON(int ID) which returns a
JsonResult`
当您的服务器启动时,这些路由由 Application_Start() 代码中调用的方法注册。XML 页面示例的简单路由注册如下所示:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"PageView_XML",
"{controller}/page/{id}/xml",
new { id = "" }
);
}
}
在这里,路由被调用"PageView_XML"
以适应一个假设的命名方案,其中还有 a"PageView"
和 a "PageView_JSON"
。名称必须是唯一的。任何与该模式匹配的 URL{controller}/page/{id}/xml
都将使用此路由,其中任何写法{this}
都是一个参数,它将与正确位置的任何字符串匹配。您会注意到它{id}
的默认值是""
(一个空字符串),这可能不是很有用;您可以选择您的控制器方法将识别并使用的东西来显示合适的错误页面。
您可以混合使用{param}
标签和文本,这样{controller}/page/{id}-xml
甚至{controller}/page/{id}_{format}
可以工作。我不太确定,{controller}/page/{id}.xml
或者{controller}/page/{id}.{format}
因为它的处理方式可能.
不同。
查看有关路由的 MSDN 信息,尤其是有关添加路由的更多详细信息。O'Reilly也有一些方便的信息。