ASP.NET 5中的MVC5 /路由(vNext)

时间:2015-09-08 15:38:29

标签: asp.net-mvc-5 asp.net-core

我有一个项目,我们希望用MVC 5和ASP.NET 5 / dnx46启动。我知道MVC6有一些变化,但该项目可能会在MVC6退出测试版之前启动 - 因此ASP.NET5 / MVC5。

我遇到的问题是路由问题。

任何基于MVC5的东西都依赖于System.Web,它似乎不能与项目的其他部分很好地配合。

那么如何设置一个通用的MVC风格的路线?

我发现了一些包含 ton 样板代码的资源,但我无法想象MS需要写入/覆盖所有内容才能完成一些基本路由在MVC6之外?

2 个答案:

答案 0 :(得分:2)

ASP.NET MVC 5仅在ASP.NET 4.x上运行。

ASP.NET MVC 6仅在ASP.NET 5上运行(使用DNX)。

MVC版本不能在ASP.NET版本之间混合使用。

然而,ASP.NET MVC 5和ASP.NET MVC 6仍然非常相似,但它们肯定也有一些重大变化。

例如,虽然路由功能在MVC 5和MVC 6之间非常相似,但是您注册路由的位置是不同的。在ASP.NET MVC 6应用程序中查看Music Store示例应用程序how to register routes

答案 1 :(得分:0)

以下内容添加到您的Startup.cs以使MVC运行。

public void ConfigureServices(IServiceCollection services)
{
    services.ConfigureRouting(
        routeOptions =>
        {
            // All generated URL's should append a trailing slash.
            routeOptions.AppendTrailingSlash = true;

            // All generated URL's should be lower-case.
            routeOptions.LowercaseUrls = true;
        });

    services.AddMvc();
}

public void Configure(IApplicationBuilder application)
{
    application.UseMvc();
}

默认情况下会添加属性路由,因此您可以使用[Route]和/或[HttpGet] / [HttpPost]属性。

[Route("[controller]")] // [controller] is replaced by 'car'.
public class CarController : Controller
{
    [Route("hello")] // Or use [HttpGet]
    public string World()
    {
        return "World";
    }
}

旧学校路线需要更多的工作。您必须在Startup.cs中添加路由

application.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "route1",
            template: "hello",
            defaults: new { controller = "Car", action = "World" });
    });