【问题标题】:Can Attribute Routing in ASP.Net MVC 5 Be Used Without Web APIASP.Net MVC 5中的属性路由可以在没有Web API的情况下使用吗
【发布时间】:2017-06-19 15:33:34
【问题描述】:

我有一个 MVC 项目,我正在尝试在其中使用属性路由,但是我不断收到有效 url 的 404。

我让谷歌看看属性路由的常见问题是什么,看看我是否遗漏了一些明显的东西,大多数答案似乎是确保路由注册如下:

 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.MapMvCAttributeRoutes() 是在控制器中搜索路由属性并配置路由的代码。

我还看到了一些对 Web API 的引用,因为我相信这些属性也可以在 APIController 中使用。

但是下面的文章似乎暗示它可以单独在 Mvc 中使用,因为没有提到 Web API。

Attribute Routing in ASP.Net MVC 5

那么是否存在依赖关系,是否需要 Web API 才能让路由属性在 MVC 中工作?

更新

使用以下精简代码:

[Route("hello")]
public class SomeController : Controller
{
    // GET: Some
    public string Index()
    {
        return "world!";
    }
}

我可以得到“世界!”的有效响应对于 url 'localhost:58268/hello',这是一个开始。所以看起来你可以在 Mvc 5 中拥有属性路由而不依赖于 Web API。

在实际代码的情况下,我一定是在定义路由时出错了。

【问题讨论】:

  • 请贴出控制器代码和路由属性。
  • @PanagiotisKanavos 看起来我在实际控制器代码上定义我的路由属性时一定犯了一个错误。当我创建一个精简的控制器作为示例发布时,我可以获得结果。因此,如果您想回答“Mvc 路由属性不需要对 Web API 的依赖”的问题,我会将其标记为答案。要么,要么我应该关闭这个问题。还是谢谢。

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing


【解决方案1】:

是的,您可以在没有 webAPI 的情况下使用 MVC 属性路由。它是 WebAPI 属性路由的独立功能。两者都是在 WebAPI 2 和 MVC 5 中同时引入的。

Web API 属性路由比 MVC 更灵活一点,在很多场景下都可以正常工作。

请注意,在 MVC Core 中,Web API 和 MVC 框架被合并了。有一个单一的属性路由功能,它更加灵活并且解决了以前框架中的大部分限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-28
    • 2015-06-21
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多