2017-05-16 3 views
0

私は現在HashRouterを使用しています。しかし、段落にリンクするためにサブルートでも#を使用できるようにしたいと考えています。たとえば、/details#Summaryです。メリットとして、よりクリーンなURLを取得し、必要な場合はSEOを取得することもできます。C#ASP:NET MVCバックエンド - React Routerからの変更v4 HashRouterからBrowserRouterへのリフレッシュで404に戻る

リフレッシュ/ダイレクトリンクで正しく動作し、正しい結果が得られます。

<HashRouter> 
    <App /> 
</HashRouter> 

リフレッシュ/ダイレクトリンクで404が表示されます。

<BrowserRouter> 
    <App /> 
</BrowserRouter> 

enter image description here

私はここでの問題は.Netに私のルーティングであることを理解し、私はそれを変更する必要があります。私は何をする必要がありますか?私はデフォルトルートを持っていますが、ヒットしません。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
+0

「詳細」というコントローラがありますか?そのURLに移動する瞬間に、これがMVCが探しているものです。 – Luke

答えて

0

まず上に示し、その後、この追加された標準routes.MapRoute削除:今、どのルートがあなたのデフォルトのアクションをレンダリングします

routes.MapRoute("Client", "{*anything}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

を。

オプション:

あなたは属性ルーティング、例のコントローラがある場合:あなたはまた、追加する必要があり

[RoutePrefix("Home")] 
public HomeController : Controller { 
    //GET Home/Index 
    [HttpGet] 
    [Route("Index")] 
    public ActionResult Index() { 
     return View(); 
    } 
} 

routes.MapMvcAttributeRoutes(); 
0

を事は、あなたが変更したときということですそれは、asp.netは、詳細のためにからのルートに一致しようとし続けます。ホーム/インデックス

これは私が使用するルートです::

routes.MapRoute(
    "Default", 
    "{*url}", 
    new { controller = "Home", action = "Index" }); 

それあなたがする必要がどのような

は、それがデフォルトの1を返すように、例えば、すべてのパスに一致するルートを作成することです'/'の後のパスを数学的に計算するブラウザを制御します

関連する問題