ASP.Net MVC 5中的属性路由可以在没有Web API的情况下使用

时间:2017-02-02 14:07:17

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

我有一个MVC项目,我正在尝试使用属性路由,但是我会继续获得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!";
    }
}

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

在实际代码的情况下,我必须在定义Route时出错。

1 个答案:

答案 0 :(得分:0)

是的,您绝对可以使用MVC属性路由它是WebAPI属性路由的一个单独功能。两者同时引入了它们(WebAPI 2和MVC 5一起发布)。

Web API属性路由比MVC更灵活,但对于更基本的场景,事情应该可以正常工作。

请注意,在MVC Core Web API和MVC中进行了合并,属性路由更加灵活,并解决了以前框架中的大部分限制。