如何让{controller}/{id}/{action}在MVC4中工作?

2024-03-25

我已经尝试了一切,但看起来我根本不明白。我的 WebApiConfig.cs 如下所示:

config.Routes.MapHttpRoute(
    "Default",
    "api/{controller}/{id}",
    new { id = RouteParameter.Optional });

config.Routes.MapHttpRoute(
    "AccountVerification",
    "api/{controller}/{id}/{action}",
    null,
    new { controller = "Account" });

我的控制器看起来像这样:

public class AccountController : ApiController {
    public HttpResponseMessage GetByKey(Guid accountID) {
        ...
    }

    [HttpGet]
    [ActionName("Verify")]
    public HttpResponseMessage VerifyAccount(Guid accountID) {
        ...
    }
}

这些方法应该通过以下 URL 获得成功:

GET /api/account                                        - WORKS
GET /api/account/00000000-0000-0000-000000000001        - WORKS
GET /api/account/00000000-0000-0000-000000000001/verify - DOESNT WORK

我尝试过很多事情;我肯定在这里做错了什么......请帮忙。


首先,如果您想使用假Guid进行测试,并且具有可选的Guid参数,则它们必须是Nullable参数(假Guid将被反序列化为null):

public class AccountController : ApiController
{
    public HttpResponseMessage GetByKey(Guid? accountID)
    {
        throw new Exception("GetByKey " + (accountID.HasValue ? accountID.ToString() : "NULL"));
    }

    [System.Web.Http.HttpGet]
    [System.Web.Http.ActionName("Verify")]
    public HttpResponseMessage VerifyAccount(Guid? accountID)
    {
        throw new Exception("VerifyAccount "+(accountID.HasValue?accountID.ToString():"NULL"));
    }
}

那么,你的映射应该:

  • 首先使用最具体的路线
  • 使用正确的参数名称
  • 使用正确的默认操作

    config.Routes.MapHttpRoute(
        "AccountVerification",
        "api/{controller}/{accountID}/{action}"
        );
    
    
    config.Routes.MapHttpRoute(
        "Default",
        "api/{controller}/{accountID}",
        defaults: new { Controller="Account", action = "GetByKey", accountID = RouteParameter.Optional }
        );
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让{controller}/{id}/{action}在MVC4中工作? 的相关文章

  • ASP.NET MVC 4 会话超时

    我正在使用 VS 2012 IIS 7 5 开发一个带有 ASP NET MVC4 的互联网应用程序 我正在使用表单身份验证 我的网络配置中的设置如下
  • MVC4如何在没有导航属性的情况下加载相关数据

    我对 MVC 相当陌生 并且已经使用 EF database first 创建了一个 MVC4 应用程序 该数据库不包含外键定义 我无法添加它们 我不拥有该数据库 以下是数据库中的两个示例类 public partial class All
  • Microsoft ASP.NET Web Pages 2 Data Nuget 包的用途是什么?

    据我了解 ASP NET MVC 4 项目所需的最低 Nuget 包是 微软 ASP NET MVC 4 微软 ASP NET 剃刀 2 微软 ASP NET 网页 2 微软网络基础设施 不过我很想知道 以下包会添加到项目中什么 Micro
  • 从 MVC 控制器返回 JSON 字符串

    我使用以下代码将对象发送 接收到我的 mvc 控制器 ajax url createOrUpdateTimeRecord data JSON stringify data type POST dataType json contentTyp
  • 如何强制 Web API 识别查询字符串参数

    ASP NET MVC4 Web API v1 控制器定义如下 它应该接受 1 或 2 个查询字符串参数 然而 如果调用方法 ko 参数始终为 null 请求如下 如何修复以便 kclient 或 namepart 参数可以在查询字符串中传
  • mvc3,你能给控制器一个显示名称吗?

    我用的是mvc3 是否可以为控制器和操作指定显示名称 DisplayName Facebook Employee public class EmployeeController Controller 在我的面包屑中 我将获得控制器名称和操作
  • ASP.NET MVC4 教程/脚手架 - 验证和显示使用几种不同的区域设置

    我正在使用 VS 2012 RC 并尝试从此处遵循 MVC4 教程 http www asp net mvc tutorials mvc 4 getting started with aspnet mvc4 accessing your m
  • 如何为 asp.net MVC 5 配置 StructureMap

    我遇到以下错误 我的设置与 asp net mvc 4 类似 没有为此对象定义无参数构造函数 描述 安 当前网页执行期间发生未处理的异常 要求 请查看堆栈跟踪以获取有关的更多信息 错误及其在代码中的起源 异常详细信息 System Miss
  • .NET 中的 Cookie 和会话过期

    我有一个 MVC4 单一应用程序页面 登录页面有 3 个字段 用户 密码和 记住我 复选框 C 登录代码是这样的 if WebSecurity Login model UserName model Password persistCooki
  • Web API 和 ASP MVC 之间的主要区别是什么

    标题确实总结了我的问题 我已经使用了这两种技术 但我不确定其中一种技术与另一种技术有何显着不同 在本质上 在设计一个宁静的 Web 应用程序时 选择 ASP MVC 或 Web API 时应考虑哪些标准和 或指南 Purpose ASP N
  • 如何在 asp.net mvc 4 中使用 signalr v2 beta

    v2 之前 RouteTable Routes MapHubs 在 v2 中 MapHubs 不再存在 wiki 说添加一个 Startup 类和一个 Configuration 方法以及对 app MapHubs 的调用 namespac
  • 将数组从 javascript 传递到控制器 MVC 4

    我正在使用剃刀 但很难将数组传递给控制器 该数组包含我制作的对象 我正在尝试执行此操作 ajax type POST url HomePage HandleOperations data JSON stringify operationCo
  • 根据 MVC 中的文化的日期时间格式

    我有一个 MVC 视图 其中列出了一个名为 CreatedOn 的日期时间类型列 值的格式如下 日 月 年 时 分 秒 当我单击编辑链接修改值时 我获得相同的格式 当我修改编辑值时 出现验证错误 字段 CreatedOn 必须是日期 我的
  • 创建包罗万象的路由

    我在网上找到了几个在 ASP NET MVC 中创建包罗万象的路由的示例 尤其是在 StackOverflow 上 但这似乎在 MVC4 中对我不起作用 public static void RegisterRoutes RouteColl
  • ASP.NET MVC 粘贴到剪贴板

    我有一个 ASP NET MVC 4 应用程序 我想复制文本 从 PDF CTRL C 并将其作为参数粘贴到控制器的方法中 我的网络网格有一个带有 ActionLink 的列 grid Column format a href Url Ac
  • 从 WEB API 控制器的异步方法中返回 Void

    我从这个博客获得的 ASP NET MVC 4 WEB API 控制器中有这个异步方法 http www strathweb com 2012 04 html5 drag and drop asynchronous multi file u
  • ASP.NET MVC 站点中的覆盖视图不起作用

    我的解决方案中有一个单独的项目 其中包含一些控制器和编译的视图 我将这些控制器用作 MVC 应用程序中其他控制器的基类 并使用 RazorGenerator 编译视图 可以说B是具有非抽象操作方法的基本控制器一些动作返回视图 MyView
  • 集成测试和单元测试(WEB API mvc 4)

    集成测试和单元测试与 APIController 测试有何关系 在集成测试中创建 Web 请求时如何模拟存储库 以便它不会对数据库进行实际查询 您可以使用自托管 http code msdn microsoft com ASPNET Web
  • 如何在MVC中获取控制器中的下拉值

    我使用递归函数使用字符串列表绑定下拉列表我的下拉菜单具有类似的值 家 首页 gt gt 厨房 首页 gt gt 厨房 gt gt ABC 我想在数据库中使用相同的下拉值 ABC 这是我的查看代码 ViewBag Title Createne
  • MVC4 输入字段占位符

    Does MVC4默认支持placeholders对于生成的输入字段 我没有找到任何东西 所以我正在尝试实现我自己的 但不幸的是Prompt E Mail 没有传递到ViewData ModelMetadata Watermark同时产生控

随机推荐