2011-01-27 16 views
1

ASP.NET 4ルーティング質問

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

お知らせ語ページ私はこのようにそれを定義した場合{slug}

前に、今:

​​

それは、nを行いますお仕事。

私のCSSやJSファイルは、負荷を習慣、私はこれを行う場合は、404

を得るしかし:

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

をそれが正常に動作します?

基本的に私は私のURLは次のようになりたい:

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

誰でも手助けできますか?たぶん

答えて

3

使用:

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

作品罰金を私のため。あなたが確かめるために必要なことは、ルートが正しい順序であることです。一般的なものばかりでなく、リソースなどを無視するようにしてください。それ以外の場合は、そこにもルーティングされます。

編集

を助け

希望は

は次のようにルートを無視:

RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}"); 
+0

+1 - ソリューションはhttp://www.stevefenton.co.uk/Content/Blog/Date/201101/Blog/The-Nicest-URLs-In-ASP-NET-MVC/に似ています – Fenton

1

How to ignore route in asp.net forms url routing

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

routes.Add(new Route("images/", new StopRoutingHandler())); 
routes.Add(new Route("js/", new StopRoutingHandler())); 
routes.Add(new Route("css/", new StopRoutingHandler())); 
1

みんなありがとうを!

私のルートを並べ替える必要がありました。

私は、HttpHandlerを使ってjsとcssファイルを結合してgzipします。これが最後のそうのように追加されました:私はwebresource.axdためStopRoutingHandlerを追加し、今ではすべての美しい作品

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

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

私は周りにこれらを切り替え!