0

ASP.NET MVC 4.5で記述されたWebサイトがあり、Products各製品に関するビューで呼び出されるコントローラーがあります。

ユーザーがwww.website.com/ProductNameにアクセスすると、www.website.com / Products/ProductNameにリダイレクトされる製品の1つが必要です。

私は今、この2つのアプローチを考えています。

  • likeと呼ばれるコントローラーを作成してProductName使用するRedirectToRoute()
  • ファイルを変更してRouteConfig.cs追加します。

あなたの最善のアプローチとその理由は何ですか?別のものはありますか?

4

3 に答える 3

1

私は@rjovicと一緒です、間違いなく2番目のアプローチを使用して、新しいルートを追加します。

最初のアプローチでは、製品ごとに新しいコントローラーを作成する必要がありますが、これは優れた設計原則に反しているようです。同じように動作する複数の製品に個別のクラスがあるのはなぜですか?ルートは、まさにこの種のシナリオ向けに設計されています。つまり、ユーザーフレンドリーなURLスキームをアプリケーションロジックの適切なハンドラーにマッピングします。

この場合、ルートを設計するための2つの可能なアプローチがあります。

  1. /{ProductName}などの任意のURLに一致します。問題は、これが貪欲なスキームであるため、他のスキームが一致しない場合にのみ使用されるように、これをルートリストの最後の近くに配置することをお勧めします。
  2. /{ProductName}のように実際の商品と一致するURLのみに一致します。したがって、製品名のリストを事前にロードし、(たとえば)「[product1 | product2|product3]」のような制約を作成する必要があります。
于 2012-08-26T21:47:09.260 に答える
0

ここで行っているのはリダイレクトだけのようです。IIS Url Rewriteモジュールの使用を検討し、次のようなリダイレクトルールを作成することをお勧めします。

<rewrite>
  <rules>
    <rule name="Redirect to Products/ProductName">
      <match url="^ProductName" />
      <action type="Redirect" url="Products/ProductName" />
    </rule>
  </rules>
</rewrite>

http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/にはたくさんの情報があります

于 2012-08-26T21:55:52.213 に答える
0

www.website.com/products/productnameよりRESTfulになります。あなたのウェブサイトのルートレベルにあなたの製品を持っていることはあなたがあなたのサイトの別のセクションを追加したいときだけ長期的に問題を求めているだけです。つまり、www.website.com / about-us-about-usは製品ですか、それとも独自のページですか?

ProductsControllerを作成し、製品名である文字列を受け取るデフォルトのアクションを設定します。

于 2012-08-26T21:59:54.870 に答える