2016-06-20 18 views
1

静的なWebページを更新する必要があり、Visual Studio 2015でASP.NET Core(ASP.NET 5 with MVC 6)を使用して再作成します。私は、Microsoftの最新技術を使用してそれを再構築して、今後の変更を簡単にしたいと考えています。ASP.NETコアルート変更

ローカルホストでプロジェクトを開始すると、既定のWebサイトが正常に読み込まれますが、既定では/Homeコントローラにルーティングされるため、リンクされたページは破損します。また、プロジェクトのjquery,cssまたは画像のいずれも、MVCがこれらのページをネストするときには見つかりません。

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 

    if (env.IsDevelopment()) 
    { 
     app.UseDeveloperExceptionPage(); 
     app.UseDatabaseErrorPage(); 
     app.UseBrowserLink(); 
    } 
    else 
    { 
     app.UseExceptionHandler("/Home/Error"); 
    } 

    app.UseStaticFiles(); 

    app.UseIdentity(); 

    // Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715 

    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "default", 
      template: "{controller=Home}/{action=Index}/{id?}"); 
    }); 
} 

これは、それが箱の外に設定されています方法です:ファイルで

Startup.cs、以下の方法があります。

当社は、すべてのウェブページのURLに/Home(または他のもの)が付いていることを望ましくありません。

私は別のページのための様々なIActionResultメソッドを作成しているが、それらのすべてが同じことを実行します。

public IActionResult Index() 
{ 
    return View(); 
} 

我々はまた、当社のウェブサイトにリンク会社を持っています。私たちのページの構造を変えることは、他の企業にもやめさせ、変更させることになります。

{controller}/{action}/{id?}などの文字列をどのように受け取ったら、action.aspx?id=xなどの標準的なリンクを返しますか?

また、特定のページにテンプレートを使用しないようにMVCに指示する方法はありますか?

これは愚かな基本的な場合私はお詫び申し上げます。私は一般的にWindowsフォームで作業します。

+0

基本的なフレームワークを利用したくないときに、あなたのエクササイズの利点は何か分かりません。 MVCがあなたが望むものでないなら、私はあなたが手にしているものに固執することを提案します。 – Saleem

+1

@Saleem、マイクロソフトがMCV(主にソーシャルメディア統合)に参加していないときは、それを行うのが難しくなっています。私がそれの一部を習得することを決してしなければ、私はそれの使い方を決して知りません。 – jp2code

答えて

1

2つの解決策があります。

ルートテンプレート:

app.UseMvc(routes => 
{ 
    routes.MapRoute(
     "HomeRoute", 
     "{action}/{id}", 
     new 
     { 
      controller = "Home", 
      action = "Index", 
      id = UrlParameter.Optional 
     }); 
}); 

属性ルート

[HttpGet("")] 
public IActionResult Index() 
{ 
    return View(); 
} 

あなたは、このメソッドを使用して完全な作業例えばASP.NET MVC Boilerplateを使用して新しいプロジェクトを作成することができます。

+0

**連絡先**、**ニュース**、** Sales **などの他のコントローラアクションはどのように処理しますか?上で編集したように、私は 'AmbiguousActionException:複数のアクションが一致しました。 ' – jp2code

+0

私はそれを見ます。私は[Daniel's Answer](http://stackoverflow.com/a/30964951/153923)を使って各アクションに名前(Contact.html、News.html、Sales.html)を付けました。 – jp2code

関連する問題