ASP.NET MVC/C# - 有効なURL文字列?

私はこれを尋ねる方法を知らないし、それが何と呼ばれているのか分からないので、私が達成したいことだけを説明するだろう。

データベースでは、いくつかの記事のタイトルまたはiginalyにスペースがあります:

my title with spaces

しかし、URLでは、スペースはプラス記号(+)やアンダースコア(_)などの他の文字に置き換えられます。

http://www.mydomain.com/mycontroller/myaction/my_title_with_spaces

または

http://www.mydomain.com/mycontroller/myaction/my+title+with+spaces

Now, how do you do that in C#? または is there any helper in ASP.NET MVC that can do something like that?

このURLを達成したとしましょう.2つのユニークなタイトルが同じURLになるというリスクはありますか?これらのタイトルを考慮してください:

Title's
Titles

解析後、同じになった

タイトル    タイトル

This will be a problem when retrieving the article from the database since I'll get two results, one fまたは "Title" and one fまたは "Title's".

1
'のような文字は一意である必要があります。 URLの問題については、私は完全にはわかりません。私はあなたの質問を完全に理解していません。
追加された 著者 Det,

1 答え

私はこのような機能を実装します:

1。新しい記事を作成するときは、タイトルに基づいてURL表現を生成します。

タイトルを適切な表現に変換する関数を使用します。 たとえば、「This is an example」というタイトルは、「This_is_an_example」のようなものを生成します。

これはあなた次第です。定義したルールでタイトルを解析する関数を作成することができます。また、問題に適している場合は既存のルールを使用することもできます。

2。 URLの表現が一意であることを確認する

それがIDになる場合は、一意でなければなりません。したがって、新しい記事を作成する際には、結果のURL表現をデータベースに照会する必要があります。データベースから結果が得られた場合は、新しく作成された記事が既に作成された記事の1つと同じ表現を生成したことを意味します。一意のままにするために何かを追加してください。

これは "This_is_an_example_2"のようなものです。それは既存のものと異なるので、このケースでは、生成された表現の末尾に「_2」を追加しました。もう一度、変更ごとにこの表現が一意であることを保証する必要があります。

3。作成したIDを記事データとともにデータベースに保存します

データベースでは、 "This_is_an_example" IDを保存して記事に関連付けるようにしてください。たぶん、テーブルのプライマリキーとして?

4。データベースに正しい記事を問い合わせる

さて、サイト訪問者に正しい記事を表示することについて: 訪問者が次のようなリソースを要求すると、

http://www.mydomain.com/mycontroller/myaction/this_is_an_example_2

記事を識別するURL部分(この場合は "this_is_an_example_2")を抽出します。

あなたがそれを持っている場合、あなたはデータベースの記事の識別子を持っています。したがって、 "this_is_an_example_2" IDを持つアーティクルのデータベースにクエリを実行し、そのアーティクルのコンテンツをユーザーに表示することができます。

これには、URLの書き換えが含まれる場合があります。残念ながら、私はasp.NETでそれを手伝うことができません。被験者の検索によっては必ずあなたを助けるでしょう。

1
追加された
@SergioTapia、私はURLにタイトルを置くことを避けるべきですか?
追加された 著者 dpp,
個人的には、一意の名前を作成することを避け、一意性のためにIDを使用するだけでなく、SEOの目的でテキスト・スラッグを追加します。 Stackoverflowのように。 IDはユニークで、URLは最後にテキストがなくてもうまく動作します。テキストは美容目的のものです。
追加された 著者 Only Bolivian Here,
私は同意する、それはアプローチの問題だ。私は上記の機能を実装したことはありませんし、ちょうど私の頭の上から例を与えた。
追加された 著者 Telmo Marques,
一意性のタイトルに頼るべきではありません。 URLのタイトルは、主にSEOの目的(セルジオの記述)で使用されています。単独ではなくIDと一緒に使用する方がよいでしょう。あなたがSEO(検索エンジンの最適化)に慣れていないなら、あなたがなぜタイトルがURLの中で使われているのかを理解するために、主題に関するいくつかの研究を行うことをお勧めします。
追加された 著者 Telmo Marques,