2015-09-08 4 views
1

У меня есть проект, который мы планируем запустить с помощью MVC 5 и ASP.NET 5/dnx46. Я понимаю, что MVC6 имеет некоторые изменения, но проект, скорее всего, будет запущен до того, как MVC6 окажется вне бета-версии - таким образом, ASP.NET5/MVC5.MVC5/Маршрутизация в ASP.NET 5 (vNext)

Проблема, с которой я столкнулся, связана с маршрутизацией.

Все, что основано на MVC5, опирается на System.Web, который, похоже, не играет хорошо с остальной частью проекта.

Так как же вы собираетесь создать общий маршрут в стиле MVC?

Я нашел несколько ресурсов, которые содержат т. шаблона кода, но я не могу себе представить, что MS требует, чтобы все было написано/переопределено только для того, чтобы получить базовую маршрутизацию вне MVC6?

+2

вы не можете использовать mvc5 с asp.net 5. Если вам нужно отправить приложение mvc5, прежде чем mvc6/asp.net 5 готов вы не должны пытаться использовать какие-либо части asp.net 5. –

+0

[ASP.NET MVC Boilerplate] (https://visualstudiogallery.msdn.microsoft.com/6cf50a48-fc1e-4eaf-9e82-0b2a6705ca7d) может помочь вам узнать, как быстрее перевести код. Он имеет больше возможностей, чем стандартный шаблон проекта. –

ответ

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, место, где вы регистрируете маршруты, отличается. Просмотрите пример приложения Music Store для how to register routes в приложении ASP.NET MVC 6.

0

Для запуска MVC в Starthot.cs добавляется следующее.

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" }); 
    }); 
Смежные вопросы