我有一个项目,我们希望用MVC 5和ASP.NET 5 / dnx46启动。我知道MVC6有一些变化,但该项目可能会在MVC6退出测试版之前启动 - 因此ASP.NET5 / MVC5。
我遇到的问题是路由问题。
任何基于MVC5的东西都依赖于System.Web,它似乎不能与项目的其他部分很好地配合。
那么如何设置一个通用的MVC风格的路线?
我发现了一些包含 ton 样板代码的资源,但我无法想象MS需要写入/覆盖所有内容才能完成一些基本路由在MVC6之外?
答案 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" });
});