私はASP.NET MVCアプリケーションを持っています。私はASP.NET vNextを学んでいます。これを行うために、私は既存のアプリケーションをvNextに移植することに決めました。私がよく分からないことは、私のルートを移植する方法です。私の原点ASP.NET MVCアプリケーションでASP.NET MVCルートをASP.NETに移行するvNext
、私は次のようしている:
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.RouteExistingFiles = true;
routes.MapRoute(
name: "Index",
url: "",
defaults: new { controller = "Root", action = "Index" }
);
routes.MapRoute(
name: "Items",
url: "items/{resource}",
defaults: new { controller = "Root", action = "Items", resource = UrlParameter.Optional }
);
routes.MapRoute(
name: "BitcoinIntegration",
url: "items/available/today/{location}",
defaults: new { controller="Root", action="Availability", location=UrlParameter.Optional }
);
routes.MapRoute(
name: "BlogPost1",
url: "about/blog/the-title",
defaults: new { controller = "Root", action = "BlogPost1" }
);
}
は今、このASP.NET vNextの世界で、私はどのようにわからないんだけど経路を設定する。私は、次のしている:
Startup.cs
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Routing;
using Microsoft.Framework.DependencyInjection;
namespace MyProject.Web
{
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseErrorPage();
app.UseServices(services =>
{
services.AddMvc();
});
app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller}/{action}");
});
app.UseMvc();
app.UseWelcomePage();
}
}
}
それでも、私は二つのわからない:
- 私は以前RouteConfig.csで定義されたルートを追加する方法。
app.UseWelcomePage()
の代わりにviews/home/Index.cshtml
をデフォルトパスとして使用する方法。
'app.UseMvc(routes => RouteConfig.RegisterRoutes(routes))の何が問題なのですか?これはvNextの区別ではなく、Global.asaxに明示的にルートを登録するのではなく、あなたのアプリケーションをブートストラップするためにOWINを使用していることを除けば、通常のMVCです。ルーティングは同じですが、別の場所から 'RegisterRoutes'を呼び出すだけです。あなたの他のHome/Indexの問題に関しては、 'UseWelcomePage'への呼び出しを削除するだけです。あなたのルーティングは、そうしなければ何をしているのかを行います。 –
@AntP - vNextにはさらに「推奨される」アプローチがありますか?私はそれが正しい方法を学ぶように、vNextとできるだけ一貫しているように努めています。ありがとうございました。 –
'UseMvc'に渡すデリゲートにあなたのルートを含める必要があります。あなたが' RouteConfig 'を呼び出すかどうかは関係ありません。RegisterRoutes(routes) 'を呼び出すか、匿名デリゲートを宣言してそこにすべてのルーティングコードを追加するだけです(現在の例のように)。おそらく 'Configure'メソッドを膨らませないようにするために、' RouteConfig'に入れておきます。 vNext規約は、すでに行っている(Global.asaxを使うのではなく)アプリケーションをブートストラップするためにOWINを使うことを指示するだけです。 –