C# ASP.NETMVC5中的属性路由是否可以在没有WebAPI的情况下使用
我有一个MVC项目,我正在尝试使用属性路由,但是我得到了有效url的404 我让谷歌看看属性路由的常见问题是什么,看看我是否遗漏了一些明显的东西,大多数答案似乎是确保路由注册如下:C# ASP.NETMVC5中的属性路由是否可以在没有WebAPI的情况下使用,c#,asp.net-mvc,asp.net-mvc-5,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc 5,Asp.net Mvc Routing,我有一个MVC项目,我正在尝试使用属性路由,但是我得到了有效url的404 我让谷歌看看属性路由的常见问题是什么,看看我是否遗漏了一些明显的东西,大多数答案似乎是确保路由注册如下: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
行routes.mapmvcattributteroutes()
是在控制器中搜索路由属性并配置路由的代码
我还看到了一些对Web API的引用,因为我相信这些属性也可以在APIController中使用
然而,下面的文章似乎建议它可以单独在Mvc中使用,因为没有提到WebAPI
那么,是否存在依赖关系?是否需要Web API才能使路由属性在MVC中工作
更新
使用以下精简代码:
[Route("hello")]
public class SomeController : Controller
{
// GET: Some
public string Index()
{
return "world!";
}
}
我可以得到一个有效的回答“世界!”对于url“localhost:58268/hello”,这是一个开始。因此,看起来您可以在MVC5中使用属性路由,而不必依赖Web API
对于实际代码,我在定义路由时一定犯了错误。是的,您完全可以使用MVC属性路由。它是WebAPI属性路由的一个单独功能。两者都是在同一时间推出的(WebAPI2和MVC5一起发布) WebAPI属性路由比MVC灵活一点,但对于更基本的场景,应该可以正常工作
请注意,在MVC核心中,Web API和MVC被合并,属性路由更加灵活,并解决了以前框架中的大多数限制。是的,您完全可以使用MVC属性路由,它是WebAPI属性路由的一个独立功能。两者都是在同一时间推出的(WebAPI2和MVC5一起发布) WebAPI属性路由比MVC灵活一点,但对于更基本的场景,应该可以正常工作
请注意,在MVC中,核心Web API和MVC合并了,属性路由更加灵活,解决了以前框架中的大多数限制。请发布控制器代码和路由属性。@PanagiotisKanavos看起来我在实际控制器代码上定义路由属性时一定犯了错误。当我创建一个精简的控制器作为示例发布时,我可以得到一个结果。因此,如果您想回答“Mvc路由属性不需要依赖Web API”的问题,我会将其标记为答案。或者我应该结束这个问题。无论如何,谢谢。请发布控制器代码和路由属性。@PanagiotisKanavos看起来我在实际控制器代码上定义路由属性时一定犯了错误。当我创建一个精简的控制器作为示例发布时,我可以得到一个结果。因此,如果您想回答“Mvc路由属性不需要依赖Web API”的问题,我会将其标记为答案。或者我应该结束这个问题。无论如何,谢谢你。