如何在ASP.NET Core中组合基于模板和属性的路由?
发布时间:2020-12-16 09:20:08 所属栏目:asp.Net 来源:网络整理
导读:我需要定义基于模板的路由到控制器,然后根据ASP.NET Core中的操作进行属性.就像是: public class Foo : Controller{ [HttpGet] public object Get() { return new { ID = "A" }; } [HttpPost] public object Create([FromBody]dynamic entity) { return new
我需要定义基于模板的路由到控制器,然后根据ASP.NET Core中的操作进行属性.就像是:
public class Foo : Controller { [HttpGet] public object Get() { return new { ID = "A" }; } [HttpPost] public object Create([FromBody]dynamic entity) { return new { ID = "B" }; } } 路线 app.UseMvc(routes => { routes.MapRoute("Settings","settings/api/foo",new { controller = "Foo" } ); }); 我希望这可行: GET /settings/api/foo POST /settings/api/foo 不幸的是,情况并非如此.看起来路由属性被忽略了.达到要求的最佳方法是什么? 解决方法
这里的技巧是将URL路由到特定的控制器和操作.然后使用操作方法重载操作方法选择器在GET和POST之间切换.
将您的路线设置代码更改为: app.UseMvc(routes => { routes.MapRoute( "Settings",new { controller = "Foo",// specific controller action = "DoThing",// AND specific action } ); }); 并更改控制器以使两个操作方法(或者您想要的多个 – 每个HTTP谓词一个)具有相同的名称,但使用不同的操作方法选择器: public class FooController : Controller { [HttpGet] // different action method selector! public object DoThing() // same name! { return new { ID = "A" }; } [HttpPost] // different action method selector! public object DoThing([FromBody]dynamic entity) // same name! { return new { ID = "B" }; } } 这样,MVC会将该URL的所有请求路由到控制器Foo上的一个名为DoThing的操作.一旦它到达那里它就会看到“哦,我的,有两个同名的动作!”但随后它会看到[HttpGet]和[HttpPost]动作方法选择器,无论其中任何一个说它能处理请求都会获胜. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Kendo UI Grid一次只扩展一行
- asp.net – 静态方法中的HttpContext.Current NullReferenc
- asp.net-mvc – 阻止MVC控制器动作的后台工作者
- asp.net – DefaultConnection和membership – localsqlser
- 如何通过给定的项目值显示Motobit Multi.Dictionary中的键?
- SCRIPT87:IE 9中无效的参数,ASP.NET C#
- asp.net-core – Microsoft.AspNet.Identity vnext中的User
- asp.net-mvc – 在使用Asp.Net MVC ActionLink,RedirectToA
- ASP.Net MVC Script Bundle导致404
- asp.net-mvc-3 – mvc3 – 如何从源代码禁用符号的htmlenco
推荐文章
站长推荐
- asp.net-mvc – 测量时间调用ASP.NET MVC控制器操
- asp.net – oauth令牌共享多个应用程序
- ASP.Net MVC 3应用程序在应用程序池回收时随机失
- asp.net – 如何在使用服务器端分隔符时转义字符
- iis-7 – IIS 7在Classic ASP中没有显示错误. II
- 用Fine Uploader+ASP.NET MVC实现ajax文件上传[代
- asp.net-mvc – MVC3中Textbox的水印
- 如何使用asp.net克隆/复制控件(带子控件)?
- asp.net-mvc – 实体框架包含OrderBy随机生成重复
- ASP.NET requestValidation 4.5和WIF
热点阅读