1

私はVS2010、C#を使用してASP.NET Webサイトを開発していますが、顧客は次のようなページを作成することを望んでいます。

mysite.com/customer(実際にはmysite / customer / default.aspxと呼ばれます)

そのため、顧客ごとにいくつかのフォルダーを手動で作成し、ユーザーがmysite.com/customerと入力して顧客ページを表示できるように、フォルダーにdefault.aspxファイルを挿入しました。

このシナリオを実行するためのより良い方法はありますか?mysite.com/customer1.aspxは必要ありません。mysite.com/customer1が必要です。とにかく、フォルダー(およびフォルダーに含まれるdefault.aspxファイル)を削除して、customersデータベースを使用して自動生成できるものはありますか。 ?

URL書き換えを使用する必要がありますか?とにかく、mysite.com / customer1.aspxページを作成でき、ユーザーはmysite.com/customer1と入力してページを表示できますか?

web.configでURLを書き換えることは可能だと思いますが、毎日ページが増えるため、web.configで手動で書き換えたくありません。

ありがとう

4

4 に答える 4

2

設定ではなくコードでこれを本当に実行したい場合は、HttpContextのRewritePathメソッドを使用してApplication_BeginRequestでパスを自分で書き換えることができます。

たとえば(これは非常に単純化された例です)、aspxがサブフォルダーのルートにある場合、次のようになります。

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    if (HttpContext.Current.Request.Path.StartsWith("/customer"))
        HttpContext.Current.RewritePath("/customer/whatever.aspx");
}

注:これは、抽出して再追加する必要のあるクエリ文字列を無視します。大文字と小文字を区別しないようにする場合は、それも処理する必要があります。

于 2012-06-05T16:24:17.860 に答える
1

構成ベースのURL書き換えが最良のオプションです。ここを見てください:http://msdn.microsoft.com/en-us/library/ms972974.aspx。書き換えはパターンベースであるため、記述している内容(mysite.com/customer1.aspxからmysite.com/customer1)が可能です。

于 2012-06-05T16:18:46.037 に答える
1

ASP.NETルーティングは、これを行うための最良の方法です。http://msdn.microsoft.com/en-us/library/cc668201.aspx

http://navigation.codeplex.com/にも役立つナビゲーションプロジェクトを作成しました。これに興味があり、サポートが必要な場合は、お知らせください。

于 2012-06-05T22:00:38.550 に答える
1

(実際に)URLの書き換えなどを試してみたい場合は、ASP.net 4 Webページを試してみませんか?

  • Razor構文は、C#(cshtml)またはVB(vbhtml)で実行できます。
  • デフォルトでは「きれいなURL」を取得します(構成もglobal.asaxルーティングもありません)
  • VisualStudioまたはWebMatrixを使用することもできます

考えられる課題:

  • (新しい)構文-しかしそれほど難しくはありません-ほとんどの場合@ではなく<%=..%>
  • ASP.Netコントロールに慣れている場合は、単純なものよりも難しい場合があります...
于 2012-06-06T05:44:08.303 に答える