従来のMVC WebサイトからAngular 2 SPAにページ単位で何とかルーティングしていますが、バットの直ぐ上の角度2のルーティング、つまり、有効なAngular 2ルートへのクエリパラメータの変換は、それが完全な悪夢であることが判明しているためです。MVCサイトからAngular 2アプリへのルーティング
従来のウェブアプリでは、コントローラーのアクションコードをAppController
の対応するアクションにリダイレクトすることによって、計画を置き換える予定です。
public ActionResult Action1(int param1, int param2)
{
return RedirectTo("Action1", "App", new { param1, param2 });
}
AppController
だから私は
<base href="/Areas/Web/">
にbase href
を設定するもindex.html
の角2アプリ
public class AppController : Controller
{
public ActionResult Index()
{
return new FilePathResult("~/Areas/Web/index.html", "text/html");
}
public ActionResult Action1(int param1, int param2)
{
return Redirect($"/Areas/Web#/{param1}/{param2}/action1");
}
}
を収容する(Areas.Web
)、独自のエリアにアイデアですASP.NET MVCを取得してindex.html
とし、ブラウザに送信します。ハッシュロケーションは、shoul d評価するには
角の側では、右ですか?次のようにapp.component.ts
ため
HashLocationStrategy
が使用されていることを確認してください私のブートストラップコードで
、
bootstrap(AppComponent, [provide(LocationStrategy, { useClass: HashLocationStrategy })])
.then(success => console.log('Bootstrap success'))
.catch(error => console.log(error));
ルーティングは、次のとおりです。
@RouteConfig([
{ path: '/:param1/:param2/action1, name: 'Action1', component: Action1Component}
])
私はこのセットアップは右Action1Component
に適切にルーティングする必要があることを前提となりしかし、それはしません。経路の設定は完全に無視され、Action1
のコンストラクタは呼び出されません。
どこが間違っていますか?
はEDITは:角度アプリの実行後、実際にどのような作品は#
なし
http://legacy.com/Areas/Web/<param1>/<param2>/action1
である - しかし、F5キーを押すと、明らかにこの戦略を中断します。したがって、ハッシュ記号を含むURLは無効なルートですが、ハッシュタグのないURLは完全に有効です。私は混乱しています....