2011-01-12 23 views
3

私は学習しています.netとURLルーティングを使用するサイトを構築しています。ASP.NET 4ルーティングIDパラメータを隠す

私はそれは私のようなIDパラメータを渡すために持っていたデータベースからデータを取得しようとしたときが働いています:

サービス/ {ID}/{カテゴリ}/{サブカテゴリ}

ポートフォリオ/ {ID}/{カテゴリ}/{タイトル}

ブログ/ {日付}/{ID}/{タイトル}

私は同じことを行うウェブサイトを見てきましたが、彼らはではありません。 IDパラメータを渡すと、どのようにこれを達成するのですか?

上記のリンクごとに特定のサービスに関する情報が必要だった場合は、サブカテゴリ名の一致を検索するSQLクエリを実行するだけですか、ブログのタイトルと日付の一致を検索するブログ投稿ですか?

ちょっと変わったようです。ブログ投稿などを追加している人がいれば、常に1つ以上のマッチのスリムな可能性があります。任意の助け

おかげで、

J.

答えて

2

あなたはいつでもあなたのブログ投稿URLの名前を確認することができます。存在する場合は、「_1」などを追加してください。さらに、ほとんどの場合、日付が含まれます。

0

あなたは彼のサイトはおそらく照会するオブジェクトを識別するための固有のパラメータとして何か他のものを使用している状態として。たぶん彼らは、そのユーザーに適用される項目だけにSQLクエリを制限するために、舞台裏でログイン時に設定されたユーザー名またはIDを使用している可能性があります。

0

通常、title - > id関係を維持します。ブログが保存、更新、または削除されるたびに、title_idテーブル内の対応するレコードが保持され、単一のselect-query 。

1

ASP.NETルーティングでは、HttpGetプロトコルを使用している場合、URLにはほとんどの場合、IDが渡されます。これは通常リンクがある場合に発生します:

<a href="tvShows/comedy/35">Watch The Big Bang Theory</a> 

あなたのIDはあなたが避けたいです。

また、HttpPostプロトコルを使用して、ヘッダーのフォームフィールドに値を渡すこともできます(これはカジュアルなユーザーには見えません)。

<form id="whatToDo"> 
    <input type="hidden" id="Category' value="tvShows"> 
    <input type="hidden" id="Genre' value="comedy"> 
    <input type="hidden" id="ShowId' value="35"> 
    <p> 
     <input type="submit" value="Watch The Big Bang Theory" /> 
    </p> 
</form> 

ユーザーがボタンをクリックしたときだから、あなたの受信コントローラは、埋め込まれた値を持つ3つのフォームフィールド、カテゴリー、ジャンル、およびShowIdを持つことになりますと、彼らは、URLには表示されません。

ボタンが気に入らないのにリンクが必要な場合は、いつでもjavaScript/jQueryを使用してフォームを送信できます。

+0

MVCを使用していないので違いがあるかどうかはわかりません。誰かが私にこれを前に言いましたが、これはすべてのページがほとんどデータベースから来るようにウェブサイトのすべてのリンクを1つ実行する必要があります。 – JBoom

+0

このテクニックはMVCでも同じですが(私が言及したコントローラを除いて)動作しません。これらの値はすべて、従来のasp.netコントロールを使用して設定し、データベースからのバインドを使用して読み取ることができます。問題ない。これが行く方法です。 – Rap

関連する問題