4

MVC 4 / ASP.NET 4.5アプリのURLでダッシュ/ハイフンを適切に許可する方法に苦労しています...何らかの理由で、MVCはダッシュをアンダースコアに変換しますが、これは私が望むものではありません。

質問を投稿する前にかなり検索を行いましたが、それでも簡単な解決策は見つかりません。私が見つけたものはすべて、そのような単純な構成ではうまくいかないようです。

基本的に、次のURLにアクセスできるようにしたいと思います。

www.mysite.com/dashes-in-url

たとえば、次の名前のコントローラーを作成しました。

dashes-in-urlController.cs

コントローラには問題のない名前が付けられ、コントローラ名にダッシュを含めることができました。

ただし、上記のコントローラーのインデックスのビューを作成すると、次のようにビューが作成されました。

フォルダ:/ Views /dashes_in_url

そのフォルダにIndex.cshtmlファイルがありますが、ダッシュがアンダースコアに置き換えられました。

だから私は次のようにURLにアクセスする必要があります:

www.mysite.com/dashes_in_url

URLにダッシュを使用する代わりに、アンダースコアを使用します。

私がやろうとしていることを達成するためのエレガントでシンプルな解決策を知っている人はいますか?

この件での助けは大歓迎です、ありがとう!

4

1 に答える 1

7

この問題のために、EveryMvc/Url を Every-mvc/url に暗黙的に変換するオープン ソースのNuGet ライブラリを開発しました。

破線の URL は SEO フレンドリーで読みやすいです。(私のブログ投稿の詳細)

NuGet パッケージ: https://www.nuget.org/packages/LowercaseDashedRoute/

これをインストールするには、プロジェクトを右クリックして NuGet パッケージ マネージャーを選択し、[オンライン] タブで [小文字の破線ルート] と入力して、Visual Studio で NuGet ウィンドウを開きます。

または、パッケージ マネージャー コンソールで次のコードを実行することもできます。

Install-Package LowercaseDashedRoute

その後、App_Start/RouteConfig.cs を開き、既存の route.MapRoute(...) 呼び出しをコメントアウトして、代わりにこれを追加する必要があります。

routes.Add(new LowercaseDashedRoute("{controller}/{action}/{id}",
  new RouteValueDictionary(
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
    new DashedRouteHandler()
  )
);

それでおしまい。すべての URL は小文字化され、破線で示され、何もしなくても暗黙的に変換されます。

オープン ソース プロジェクトの URL: https://github.com/AtaS/lowercase-dashed-route

于 2013-08-03T11:54:23.303 に答える