asp.net – 如何在MVC4中扩展内容协商行为?
发布时间:2020-12-16 07:23:30 所属栏目:asp.Net 来源:网络整理
导读:我正在通过RESTful API设计,以及我发布到Programmers StackExchange站点 here的内容协商的一个问题. 基于此,我对如何在MVC4中支持以下行为感兴趣: 如果在URL上指定了扩展名(例如,GET /api/search.json或/api/search.xml),则覆盖MVC4中的默认内容协商行为 如
我正在通过RESTful API设计,以及我发布到Programmers StackExchange站点
here的内容协商的一个问题.
基于此,我对如何在MVC4中支持以下行为感兴趣: >如果在URL上指定了扩展名(例如,GET /api/search.json或/api/search.xml),则覆盖MVC4中的默认内容协商行为 捕获此扩展和修改内容协商行为的最干净/最直接的方法是什么? 解决方法
您可以在格式化程序中使用UriPathExtensionMapping来完成此操作.这些映射允许您为格式化程序“分配”扩展,以便在内容协商期间优先使用它们.您还需要添加路由,以便也可以接受带有“扩展名”的请求.下面的代码显示了启用此方案的默认模板中所需的更改.
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapHttpRoute( name: "Api with extension",routeTemplate: "api/{controller}.{ext}/{id}",defaults: new { id = RouteParameter.Optional,ext = RouteParameter.Optional } ); routes.MapHttpRoute( name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional } ); routes.MapRoute( name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home",action = "Index",id = UrlParameter.Optional } ); } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); GlobalConfiguration.Configuration.Formatters.XmlFormatter.AddUriPathExtensionMapping("xml","text/xml"); GlobalConfiguration.Configuration.Formatters.JsonFormatter.AddUriPathExtensionMapping("json","application/json"); BundleTable.Bundles.RegisterTemplateBundles(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET,C#和匿名类型 – 在手动构建匿名类型时迭代DataTab
- asp.net-mvc – Visual Studio提示使用Razor语法1.0安装ASP
- asp.net-mvc – 如何在ASP.NET MVC中更改Url.Encode字符替换
- asp.net-mvc – ASP.NET MVC区域中的自定义错误覆盖
- 设计模式 – 为什么在绿地ASP.Net MVC应用程序中使用提供者
- 使用ASP.NET MVC 3和实体框架4.1代码首先在SQL CE 4.0中存储
- asp.net – 呈现空转发器
- 经典ASP和ASP.NET集成
- ASP.NET MVC 3 ValidateRequest(false)不能使用FormCollect
- C#_.NetFramework_WebAPI项目_EXCEL数据导出 C#
推荐文章
站长推荐
- asp.net-mvc – 如何在MVC中创建通用视图模型?
- ASP.NET 5中的子域路由
- asp.net-mvc-3 – 无法加载文件或程序集’Struct
- asp.net-mvc – 调用SaveChanges()时从更新中排除
- 我的ASP.Net代码可以从sendgrid得到确认邮件已发
- asp.net-mvc – Pro ASP.Net MVC 3实体框架体育商
- asp.net管理多个web.config文件
- asp.net – 创建适合任何屏幕分辨率的母版页
- asp.net-mvc-2 – 为什么mvc Html.HiddenFor不渲
- asp.net-mvc – 在ASP.NET MVC组织帐户中访问Azu
热点阅读