Asp.net mvc 4 ASP.NET路由:根据扩展名返回特定格式
我正在尝试创建一个MVC4应用程序,对此我还是个新手。 如何将路由映射到特定的文件扩展名 我想这样做:Asp.net mvc 4 ASP.NET路由:根据扩展名返回特定格式,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我正在尝试创建一个MVC4应用程序,对此我还是个新手。 如何将路由映射到特定的文件扩展名 我想这样做: Controller/Action/ (maybe an ID) public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.MapRoute( "Pa
Controller/Action/ (maybe an ID)
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"PageView_XML",
"{controller}/page/{id}/xml",
new { id = "" }
);
}
}
这将返回一个MVC视图,供用户在浏览器中查看
在另一种情况下:
Controller/Action/ (Maybe an ID) .json
或:
这应该返回相同的对象,但使用JSON或XML,以便Web服务使用。它没有太多到扩展的映射-MVC4URL不需要直接与文件对应。相反,您可以注册与控制器操作相对应的路由。因此,您可以选择以下路线:
它链接到/something/page/{ID}
它返回一个SomeController.ShowPage(int-ID)
ViewResult
链接到/something/page/{ID}/xml
,返回SomeController.PageAsXML(int-ID)
XDocument
SomeController.PageAsJSON(int-ID)/something/page/{ID}/json,链接到
JsonResult`,返回一个
Controller/Action/ (maybe an ID)
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"PageView_XML",
"{controller}/page/{id}/xml",
new { id = "" }
);
}
}
这里,路由被称为“PageView\u XML”
,以适应一个假设的命名方案,其中还有一个“PageView”
和一个“PageView\u JSON”
。名称必须是唯一的。
任何与模式{controller}/page/{id}/xml
匹配的URL都将使用此路由,其中任何类似{this}
的内容都是一个参数,它将与正确位置的任何字符串匹配。您会注意到,{id}
的默认值为”
(一个空字符串),这可能不是很有用;您可以选择控制器方法将识别的内容,并使用它来显示适当的错误页面
您可以混合使用{param}
标记和文本,这样{controller}/page/{id}-xml
甚至{controller}/page/{id}{format}
都可以工作。我不太确定{controller}/page/{id}.xml
或{controller}/page/{id}.{format}
,因为它可能会以不同的方式处理
请查看,特别是有关添加路线的更多详细信息。还有一些方便的信息。您可以在MVC4 Web API的Json和Xml Mediatypeformatters上使用名为AddUrlPathExtensionMapping的扩展方法,使您能够请求这些特定格式的数据