gpt4 book ai didi

asp.net-mvc - 如何停止 MVC 中的多条路由匹配?

转载 作者:行者123 更新时间:2023-12-01 23:18:22 25 4
gpt4 key购买 nike

我是 MVC 的新手,但我正在尝试创建 MVC Web API,但我遇到了路由问题。

我正在尝试使用以下 URL 模式:

/api/venue/1999          // doesn't work
/api/venue/1999/images/ // works

第二个 URL 模式工作正常,但如果我尝试访问第一个,我会收到一条错误消息:

Multiple actions were found that match the request: VenuefinderWebAPI.Models.Venue Get(Int32) on type VenuefinderWebAPI.Controllers.VenueController System.String[] Images(Int32) on type VenuefinderWebAPI.Controllers.VenueController

我不确定是我的路由错误(多次匹配)还是我的 Controller 类中的某些内容。如何解决这个问题?

在我的 webApiConfig 中我有这个:

config.Routes.MapHttpRoute(
name: "VenueImages",
routeTemplate: "api/venue/{venueID}/images/",
defaults: new { controller="Venue", action = "images" }
);

config.Routes.MapHttpRoute(
name: "VenueDefault",
routeTemplate: "api/venue/{venueID}",
defaults: new { controller = "Venue" }
);

VenueController.cs 有:

// GET api/venue/5
public Venue Get(int venueID)
{
// code
}

and
[HttpGet]
[ActionName("images")]
string[] Images(int venueID)
{
// code
}

最佳答案

试试这个...

更改您的 field Controller :

public string Get(int venueID)
{
// code
}

[HttpGet]
public string[] Images(int venueID)
{
// code
}

改变你的路线:

config.Routes.MapHttpRoute(
name: "VenueDefault",
routeTemplate: "api/venue/{venueID}/{action}",
defaults: new { controller = "Venue", action = "get" },
constraints: new { venueID = @"\d+" }
);

*将 Mike 的约束添加到 route 。

--- 上面的内容---
路由匹配urls,其中venueID为数字,action方法默认为get方法,除非另有说明。

请记住,操作方法是您在 Controller 中的方法。

关于asp.net-mvc - 如何停止 MVC 中的多条路由匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12742688/

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