asp.net-mvc – 具有不同Http方法的RESTful控制器,但是相同的参
发布时间:2020-12-16 07:31:35 所属栏目:asp.Net 来源:网络整理
导读:假设我有一个Controller来处理’Home’的CRUD场景. Get会看起来像这样: [HttpGet] public ActionResult Index(int? homeId) { Home home = homeRepo.GetHome(homeId.Value); return Json(home,JsonRequestBehavior.AllowGet); } 到现在为止还挺好.然后我添
假设我有一个Controller来处理’Home’的CRUD场景. Get会看起来像这样:
[HttpGet] public ActionResult Index(int? homeId) { Home home = homeRepo.GetHome(homeId.Value); return Json(home,JsonRequestBehavior.AllowGet); } 到现在为止还挺好.然后我添加了一个用于添加新帖子的帖子操作. [HttpPost] public ActionResult Index(Home home) { //add the new home to the db return Json(new { success = true }); } 真棒.但是,当我使用相同的方案处理put(更新现有的家)时…… [HttpPut] public ActionResult Index(Home home) { //update existing home in the db return Json(new { success = true }); } 我们遇到了一个问题. Post和Put的方法签名是相同的,当然C#不喜欢.我可以尝试一些方法,比如在签名中添加伪参数,或者更改方法名称以直接反映CRUD.但这些都是黑客或不受欢迎的. 在这里开始保存RESTful,CRUD样式控制器的最佳实践是什么? 解决方法
这是我所知道的最佳解决方案:
[HttpPut] [ActionName("Index")] public ActionResult IndexPut(Home home) { ... } 基本上,ActionNameAttribute是为了处理这些场景而创建的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 内联如果在Razor View中
- 可能在ASP.Net页面中引发404错误?
- asp.net – 如何使用Web API属性路由传递DateTime参数?
- asp.net – 为什么我的SiteMapPath在Firefox中有“Skip Nav
- asp.net-mvc – MVC 4中的ReportViewer部分
- asp微信支付代码证书文件post_url.aspx和post_url.aspx.cs源
- asp.net-mvc-3 – 定义WebActivator.PreApplicationStartMe
- 动手造轮子:实现一个简单的依赖注入(三) --- 支持属性注入
- 阻止ASP.NET MVC调用模型类中的所有getter
- .net – 如何将变量传递给SqlDataSource的SelectCommand?