gpt4 book ai didi

asp.net-mvc-4 - 如何使 {controller}/{id}/{action} 在 MVC4 中工作?

转载 作者:行者123 更新时间:2023-12-01 02:27:21 24 4
gpt4 key购买 nike

我已经尝试了一切,但看起来我根本没有得到它。我的 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" });

我的 Controller 看起来像这样:
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

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

最佳答案

首先,如果你想用假的 Guids 进行测试,并且有可选的 Guid 参数,它们必须是 Nullable 参数(假的 guids 将被反序列化为 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 }
    );
  • 关于asp.net-mvc-4 - 如何使 {controller}/{id}/{action} 在 MVC4 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15331050/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com