1

Global.asax ファイルで次のことを実行しようとしています。

現時点では、次のようにルートを定義する必要があります。

routes.MapPageRoute(
    "ViewPage", 
    "pages/{slug}",
    "~/viewpage.aspx",
    false
);

の前に単語ページがあることに注意してください。{slug}

今、次のように定義すると:

routes.MapPageRoute (
    "ViewPage", 
    "{slug}",
    "~/viewpage.aspx",
    false
);

それは動作しません。

CSS と JS ファイルが読み込まれず、404 が表示されます。

しかし、私がこれを行うと:

routes.MapPageRoute (
    "ContactPage", 
    "contact",
    "~/contact.aspx",
    false
);

ちゃんと効く??

基本的に、URLを次のようにしたい:

example.com/contactまたはexample.com/about-us、{slug} に基づいてデータベースからすべて動的に提供されます。

誰でも助けることができますか?

4

3 に答える 3

3

使用:

RouteTable.Routes.MapPageRoute("slug", 
                "{slug}",
                "~/page.aspx", false);

私にとってはうまくいきます。確認する必要があるのは、ルートが正しい順序になっていることです。一般に固有ですが、リソースなどの無視もあります。それ以外の場合は、そこにもルーティングされます。

それが役立つことを願っています

編集

次のようなルートを無視します。

RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");
于 2011-01-27T10:19:02.153 に答える
1

みんなありがとう!!

ルートを再注文する必要がありました。

HttpHandler を使用して、js ファイルと css ファイルを結合して gzip します。これは最後に次のように追加されました:

const string combine = "~/code/httphandlers/httpcombiner.ashx";
RegisterRoutes(RouteTable.Routes);
RouteTable.Routes.Add(new Route("combine", new HttpHandlerRoute(combine)));

これらを次のように切り替えました:

const string combine = "~/code/httphandlers/httpcombiner.ashx";
RouteTable.Routes.Add(new Route("combine", new HttpHandlerRoute(combine)));
RegisterRoutes(RouteTable.Routes);

webresource.axd に StopRoutingHandler を追加したところ、すべてがうまく機能するようになりました。

于 2011-01-27T10:43:49.913 に答える
1

asp.netフォームのURLルーティングでルートを無視する方法

現時点ではテストできませんが、おそらくこのようなものです。私が理解していることから、ルーティングハンドラーにそれらのディレクトリ内のものを無視するように指示する必要があります。

routes.Add(new Route("images/", new StopRoutingHandler()));
routes.Add(new Route("js/", new StopRoutingHandler()));
routes.Add(new Route("css/", new StopRoutingHandler()));
于 2011-01-27T10:18:54.340 に答える